Socket.BeginReceiveMessageFrom 方法

定义

开始使用指定的 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

参数

buffer
Byte[]

Byte 类型的数组,它是存储接收到的数据的位置。

offset
Int32

buffer 参数中存储数据的位置,该位置从零开始计数。

size
Int32

要接收的字节数。

socketFlags
SocketFlags

SocketFlags 值的按位组合。

remoteEP
EndPoint

EndPoint 类型的引用,其类型与同步接收时要更新的远程主机的终结点相同。

callback
AsyncCallback

AsyncCallback 委托。

state
Object

包含此请求的状态信息的对象。

返回

引用异步读的 IAsyncResult

例外

buffernull

remoteEPnull

仅限 .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 实例和特定回调) 后,该上下文的后续使用将提高性能。

适用于