c# socket beginread endread
时间: 2024-11-29 21:39:18 浏览: 5
C# socket开发
在 C# 中,`Socket` 类用于网络通信,`BeginRead` 和 `EndRead` 是两个异步 I/O 操作,它们通常一起用于接收数据。以下是基本的工作流程:
1. **BeginRead**: 这是一个非阻塞操作,它开始一个读取操作而不等待其完成。你需要创建一个 `IAsyncResult` 结构体的实例,并将其传递给 `BeginRead` 方法,同时提供要读取的数据缓冲区、最大字节数以及一个回调方法(当读取完成后会被调用),这样当前线程就可以继续执行其他任务。
```csharp
byte[] buffer = new byte[BufferSize];
IAsyncResult result = socket.BeginRead(buffer, 0, buffer.Length, null, callback);
```
2. **Callback** 或 **EndRead**: 当数据准备好时,`BeginRead` 执行的回调方法(例如 `callback`) 会自动被调用。在这个方法内部,你可以通过 `EndRead` 完成整个读取过程,获取实际读取到的字节数。
```csharp
int bytesRead = socket.EndRead(result);
```
阅读全文