Socket.EndReceive 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
结束挂起的异步读取。
重载
| 名称 | 说明 |
|---|---|
| EndReceive(IAsyncResult) |
结束挂起的异步读取。 |
| EndReceive(IAsyncResult, SocketError) |
结束挂起的异步读取。 |
EndReceive(IAsyncResult)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
结束挂起的异步读取。
public:
int EndReceive(IAsyncResult ^ asyncResult);
public int EndReceive(IAsyncResult asyncResult);
member this.EndReceive : IAsyncResult -> int
Public Function EndReceive (asyncResult As IAsyncResult) As Integer
参数
- asyncResult
- IAsyncResult
存储 IAsyncResult 此异步操作的状态信息和任何用户定义的数据。
返回
收到的字节总数。 仅当请求了零个字节或没有更多字节可用时,该方法才会返回零(0),因为对等套接字执行了正常关闭。 如果请求了零个字节,则接收操作可能会立即完成,或者直到至少有一个字节可用(但不消耗任何数据)才能完成。
例外
asyncResult 是 null。
asyncResult 未由对方法的调用 BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) 返回。
EndReceive(IAsyncResult) 以前为异步读取调用过。
仅限 .NET Framework、.NET Core 和 .NET 5-6: Socket 已关闭。
注解
重要
这是一个兼容性 API。 不建议使用 APM (Begin* 和 End*) 方法进行新开发。 请改用基于 -- 的 Task等效项。
EndReceive 完成由 BeginReceive. 启动的操作。 需要传递 IAsyncResult 匹配 BeginReceive 调用创建的。
此方法 EndReceive 将阻止数据,直到数据可用。 如果使用无连接协议, EndReceive 将读取传入网络缓冲区中可用的第一个排队数据报。 如果使用面向连接的协议,该方法EndReceive将读取尽可能多的数据,最多可以读取方法参数BeginReceive中指定的size字节数。 如果远程主机关闭 Socket 了与 Shutdown 该方法的连接,并且已收到所有可用数据,则 EndReceive 该方法将立即完成并返回零字节。
注释
如果收到, SocketException请使用该 SocketException.ErrorCode 属性获取特定的错误代码。
注释
当给定线程退出时,将取消由给定线程启动的所有 I/O。 如果线程在作完成之前退出,挂起的异步作可能会失败。
注释
在应用程序中启用网络跟踪时,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。
另请参阅
- BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- IAsyncResult
- AsyncState
- Shutdown(SocketShutdown)
适用于
EndReceive(IAsyncResult, SocketError)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
结束挂起的异步读取。
public:
int EndReceive(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int EndReceive(IAsyncResult asyncResult, out System.Net.Sockets.SocketError errorCode);
member this.EndReceive : IAsyncResult * SocketError -> int
Public Function EndReceive (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer
参数
- asyncResult
- IAsyncResult
存储 IAsyncResult 此异步操作的状态信息和任何用户定义的数据。
- errorCode
- SocketError
SocketError存储套接字错误的对象。
返回
收到的字节总数。 仅当请求了零个字节或没有更多字节可用时,该方法才会返回零(0),因为对等套接字执行了正常关闭。 如果请求了零个字节,则接收操作可能会立即完成,或者直到至少有一个字节可用(但不消耗任何数据)才能完成。
例外
asyncResult 是 null。
asyncResult 未由对方法的调用 BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) 返回。
EndReceive(IAsyncResult) 以前为异步读取调用过。
仅限 .NET Framework、.NET Core 和 .NET 5-6: Socket 已关闭。
注解
重要
这是一个兼容性 API。 不建议使用 APM (Begin* 和 End*) 方法进行新开发。 请改用基于 -- 的 Task等效项。
EndReceive 完成由 BeginReceive. 启动的操作。 需要传递 IAsyncResult 匹配 BeginReceive 调用创建的。
此方法 EndReceive 将阻止数据,直到数据可用。 如果使用无连接协议, EndReceive 将读取传入网络缓冲区中可用的第一个排队数据报。 如果使用面向连接的协议,该方法EndReceive将读取尽可能多的数据,最多可以读取方法参数BeginReceive中指定的size字节数。 如果远程主机关闭 Socket 了与 Shutdown 该方法的连接,并且已收到所有可用数据,则 EndReceive 该方法将立即完成并返回零字节。
注释
如果收到, SocketException请使用该 SocketException.ErrorCode 属性获取特定的错误代码。
注释
当给定线程退出时,将取消由给定线程启动的所有 I/O。 如果线程在作完成之前退出,挂起的异步作可能会失败。
注释
在应用程序中启用网络跟踪时,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。
另请参阅
- BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- IAsyncResult
- AsyncState
- Shutdown(SocketShutdown)