C# Socket EndReceiveFrom
时间: 2023-12-07 16:43:59 浏览: 37
C#中的Socket类中的EndReceiveFrom方法用于结束异步接收从远程主机发送的数据包。它接受一个IAsyncResult对象作为参数,该对象表示之前调用BeginReceiveFrom方法所返回的异步操作。
调用EndReceiveFrom方法将会阻塞当前线程,直到接收操作完成或发生错误。它返回接收到的字节数,并且从指定的远程主机和端口接收到的数据包将被存储在提供的缓冲区中。
以下是使用EndReceiveFrom方法的示例代码:
```csharp
byte[] buffer = new byte[1024];
EndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
// Begin receiving asynchronously
socket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref remoteEndPoint, ar =>
{
// Callback method
try
{
int bytesRead = socket.EndReceiveFrom(ar, ref remoteEndPoint);
// Process received data here
}
catch (SocketException ex)
{
// Handle socket error
}
}, null);
// Do other tasks while receiving data asynchronously
// Wait for the receive operation to complete
socket.EndReceiveFrom(ar, ref remoteEndPoint);
```
在上面的示例中,我们使用BeginReceiveFrom方法启动了异步接收操作,并在回调方法中调用了EndReceiveFrom方法来结束接收操作并处理接收到的数据。请注意,此代码仅作为示例,实际使用时可能需要进行错误处理和其他逻辑。