在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
方法将被调用,我们可以在该方法中处理接收到的数据。