c#

c# beginreceive在哪定义回调函数

小樊
83
2024-12-04 07:16:50
栏目: 编程语言

在C#中,BeginReceive方法通常用于异步接收数据。为了处理接收到的数据,您需要定义一个回调函数,该函数将在数据到达时被调用。回调函数应该是一个满足AsyncCallback委托签名的方法。

以下是一个简单的示例,展示了如何在C#中使用BeginReceive定义回调函数:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        // 创建一个TCP客户端
        TcpClient client = new TcpClient("example.com", 80);

        // 定义回调函数
        AsyncCallback callback = new AsyncCallback(HandleReceivedData);

        // 开始异步接收数据
        client.BeginReceive(new byte[1024], 0, 1024, SocketFlags.None, callback);

        // 为了演示,让主线程等待一段时间,以便接收到数据
        Console.WriteLine("Waiting for data...");
        Task.Delay(5000).Wait();

        // 关闭连接
        client.Close();
    }

    static void HandleReceivedData(IAsyncResult result)
    {
        // 获取客户端套接字
        TcpClient client = (TcpClient)result.AsyncState;

        // 结束异步接收操作
        int bytesReceived = client.EndReceive(result);

        // 将接收到的数据转换为字符串
        string data = Encoding.ASCII.GetString(bytesReceived, 0, bytesReceived);

        // 输出接收到的数据
        Console.WriteLine("Received data: " + data);
    }
}

在这个示例中,我们创建了一个TCP客户端,定义了一个名为HandleReceivedData的回调函数,并将其传递给BeginReceive方法。当数据到达时,HandleReceivedData方法将被调用,我们可以在该方法中处理接收到的数据。

0
看了该问题的人还看了