以下是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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录