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 中的网络跟踪。
适用于
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈