Socket.EndReceiveMessageFrom 方法

定义

结束挂起的、从特定终结点进行异步读取。 此方法还显示有关数据包而不是 EndReceiveFrom(IAsyncResult, EndPoint) 的更多信息。

public:
 int EndReceiveMessageFrom(IAsyncResult ^ asyncResult, System::Net::Sockets::SocketFlags % socketFlags, System::Net::EndPoint ^ % endPoint, [Runtime::InteropServices::Out] System::Net::Sockets::IPPacketInformation % ipPacketInformation);
public int EndReceiveMessageFrom (IAsyncResult asyncResult, ref System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint endPoint, out System.Net.Sockets.IPPacketInformation ipPacketInformation);
member this.EndReceiveMessageFrom : IAsyncResult * SocketFlags * EndPoint * IPPacketInformation -> int
Public Function EndReceiveMessageFrom (asyncResult As IAsyncResult, ByRef socketFlags As SocketFlags, ByRef endPoint As EndPoint, ByRef ipPacketInformation As IPPacketInformation) As Integer

参数

asyncResult
IAsyncResult

IAsyncResult,它存储此异步操作的状态信息以及所有用户定义的数据。

socketFlags
SocketFlags

所接收数据包的 SocketFlags 值的按位组合。

endPoint
EndPoint

EndPoint

ipPacketInformation
IPPacketInformation

所接收数据包的 IPAddress 和接口。

返回

如果成功,则返回已接收的字节数。 如果不成功,则返回 0。

例外

asyncResultnull

- 或 -

endPointnull

尝试访问套接字时出错。

- 或 -

仅限 .NET 7+: Socket 已关闭。

仅.NET Framework、.NET Core 和 .NET 5-6:Socket已关闭。

注解

重要

这是一个兼容性 API。 不建议使用 APM (Begin*End*) 方法进行新开发。 请改用 Task基于 的等效项。

EndReceiveFrom 完成由 BeginReceiveFrom启动的操作。 需要传递 IAsyncResult 由匹配 BeginReceiveFrom 调用创建的 。 EndReceiveFrom 将阻止调用线程,直到操作完成。

检查 ipPacketInformation 是否需要知道数据报是使用单播、多播还是广播地址发送的。

注意

如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。

适用于