C#TCP客服端异步接收数据
以下是C# TCP客服端异步接收数据的示例代码:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
class Program
{
static void Main(string[] args)
{
StartClient();
}
static void StartClient()
{
// 创建一个TCP客户端
TcpClient client = new TcpClient();
// 连接到服务器
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint remoteEP = new IPEndPoint(ipAddress, 8888);
client.Connect(remoteEP);
// 异步接收数据
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[1024];
StringBuilder sb = new StringBuilder();
AsyncCallback callback = null;
callback = (result) =>
{
// 结束异步读取操作并获取读取的字节数
int bytesRead = stream.EndRead(result);
if (bytesRead > 0)
{
// 将字节数组转换为字符串
string data = Encoding.ASCII.GetString(buffer, 0, bytesRead);
sb.Append(data);
// 继续异步接收数据
stream.BeginRead(buffer, 0, buffer.Length, callback, null);
}
else
{
// 所有数据已接收完毕,进行处理
Console.WriteLine("接收到的数据:{0}", sb.ToString());
// 关闭TCP客户端
client.Close();
}
};
stream.BeginRead(buffer, 0, buffer.Length, callback, null);
}
}
在上述代码中,我们首先创建了一个TCP客户端,并连接到服务器。然后,我们使用client.GetStream()方法获取网络流,然后使用stream.BeginRead()方法开始异步读取操作。在异步读取操作的回调函数中,我们首先使用stream.EndRead()方法获取读取的字节数,如果读取的字节数大于0,则将字节数组转换为字符串并将其追加到StringBuilder中,并继续异步接收数据。如果读取的字节数为0,则表示所有数据已接收完毕,我们可以进行处理并关闭TCP客户端
原文地址: http://www.cveoy.top/t/topic/fHNc 著作权归作者所有。请勿转载和采集!