Socket.BeginReceiveMessageFrom 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
开始使用指定的 SocketFlags 将指定字节数的数据异步接收到数据缓冲区的指定位置,然后存储终结点和数据包信息。
public:
IAsyncResult ^ BeginReceiveMessageFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceiveMessageFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceiveMessageFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginReceiveMessageFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceiveMessageFrom (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult
参数
- offset
- Int32
buffer
参数中存储数据的位置,该位置从零开始计数。
- size
- Int32
要接收的字节数。
- socketFlags
- SocketFlags
SocketFlags 值的按位组合。
- callback
- AsyncCallback
AsyncCallback 委托。
- state
- Object
包含此请求的状态信息的对象。
返回
引用异步读的 IAsyncResult。
例外
仅限 .NET Framework 和 .NET 5 及更早版本:尝试访问套接字时出错。
offset
小于 0。
或
offset
大于 buffer
的长度。
或
size
小于 0。
- 或 -
size
大于 buffer
的长度减去 offset
参数的值。
注解
重要
这是一个兼容性 API。 不建议使用 APM (Begin*
和 End*
) 方法进行新的开发。 请改用 Task
基于 的等效项。
可以将实现 的AsyncCallbackBeginReceiveMessageFrom回调传递给 ,以获取有关操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,将在调用 BeginReceiveMessageFrom期间内联执行回调。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true
以指示方法同步完成。
AsyncState使用 的 IAsyncResult 属性获取传递给 BeginReceiveMessageFrom 方法的状态对象。
BeginReceiveMessageFrom异步操作必须通过调用 EndReceiveMessageFrom 方法来完成。 通常,委托会调用 AsyncCallback 方法。 EndReceiveMessageFrom 将阻止调用线程,直到操作完成。
若要取消挂起 BeginReceiveMessageFrom的 ,请 Close 调用 方法。
此方法将数据读入 buffer
参数,并捕获从中发送数据的远程主机终结点,以及有关接收的数据包的信息。 有关如何检索此终结点的信息,请参阅 EndReceiveMessageFrom。 如果要异步接收来自未知主机或多个主机的无连接数据报,此方法最有用。
注意
如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。
备注
当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。
注意
为异步 Socket 方法缓存执行上下文 (安全上下文、模拟用户和调用上下文) 。 首次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。