Socket.EndReceiveFrom(IAsyncResult, EndPoint) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
结束挂起的、从特定终结点进行异步读取。
public:
int EndReceiveFrom(IAsyncResult ^ asyncResult, System::Net::EndPoint ^ % endPoint);
public int EndReceiveFrom (IAsyncResult asyncResult, ref System.Net.EndPoint endPoint);
member this.EndReceiveFrom : IAsyncResult * EndPoint -> int
Public Function EndReceiveFrom (asyncResult As IAsyncResult, ByRef endPoint As EndPoint) As Integer
参数
- asyncResult
- IAsyncResult
IAsyncResult,它存储此异步操作的状态信息以及所有用户定义的数据。
返回
如果成功,则返回已接收的字节数。 如果不成功,则返回 0。
例外
asyncResult
为 null
。
对 BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object) 方法的调用未返回 asyncResult
。
仅.NET Framework、.NET Core 和 .NET 5-6:Socket已关闭。
注解
重要
这是一个兼容性 API。 不建议使用 APM (Begin*
和 End*
) 方法进行新的开发。 请改用 Task
基于 的等效项。
EndReceiveFrom 完成由 BeginReceiveFrom启动的操作。 需要传递 IAsyncResult 通过匹配 BeginReceiveFrom 调用创建的 。
方法 EndReceiveFrom 将阻止,直到数据可用。 如果使用无连接协议, EndReceiveFrom 将读取传入网络缓冲区中可用的第一个排队数据报。 如果使用的是面向连接的协议,则 EndReceiveFrom 方法将读取与可用数据量一样多的数据,最多可读取在 方法的 BeginReceiveFrom 参数中指定的size
字节数。 如果远程主机关闭 Socket 了与 Shutdown 方法的连接,并且已收到所有可用数据,则 EndReceiveFrom 该方法将立即完成并返回零个字节。 若要获取接收的数据,请调用 AsyncState 对象的 方法 IAsyncResult ,并提取结果状态对象中包含的缓冲区。 若要标识原始主机,请提取 EndPoint 并将其强制转换为 IPEndPoint。
IPEndPoint.Address使用 方法获取 IP 地址,IPEndPoint.Port使用 方法获取端口号。
注意
如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。
备注
当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。