Socket.ReceiveMessageFromAsync 方法

定义

重载

ReceiveMessageFromAsync(SocketAsyncEventArgs)

开始使用指定的 SocketFlags 将指定字节数的数据异步接收到数据缓冲区的指定位置,并存储终结点和数据包信息。

ReceiveMessageFromAsync(ArraySegment<Byte>, EndPoint)

接收数据并返回有关邮件发件人的其他信息。

ReceiveMessageFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

接收数据并返回有关邮件发件人的其他信息。

ReceiveMessageFromAsync(Memory<Byte>, EndPoint, CancellationToken)

接收数据并返回有关邮件发件人的其他信息。

ReceiveMessageFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

接收数据并返回有关邮件发件人的其他信息。

ReceiveMessageFromAsync(SocketAsyncEventArgs)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

开始使用指定的 SocketFlags 将指定字节数的数据异步接收到数据缓冲区的指定位置,并存储终结点和数据包信息。

public:
 bool ReceiveMessageFromAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveMessageFromAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveMessageFromAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveMessageFromAsync (e As SocketAsyncEventArgs) As Boolean

参数

e
SocketAsyncEventArgs

要用于此异步套接字操作的 SocketAsyncEventArgs 对象。

返回

如果 I/O 操作挂起,则为 true。 操作完成时,将引发 e 参数的 Completed 事件。

如果 I/O 操作同步完成,则为 false。 在这种情况下,将不会引发 e 参数的 Completed 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。

例外

尝试访问套接字时出错。

注解

方法 ReceiveMessageFromAsync 主要用于在无连接套接字上接收消息数据。 套接字的本地地址必须已知。 此方法只能与数据报和原始套接字一起使用。 在调用此方法之前,必须使用设置为 DgramRaw 的套接字类型初始化套接字。 这可以在使用 Socket构造套接字时完成。

调用方必须将 属性设置为SocketAsyncEventArgs.RemoteEndPointEndPoint与远程主机的终结点类型相同的 。 成功接收到实际远程终结点后,属性将更新。

对象上的 System.Net.Sockets.SocketAsyncEventArgs 以下属性和事件是成功调用此方法所必需的:

调用方可以在调用 ReceiveMessageFromAsync 方法之前将 属性设置为SocketAsyncEventArgs.UserToken所需的任何用户状态对象,以便在回调方法中检索信息。 如果回调需要比单个对象更多的信息,则可以创建一个小类来保存其他所需的状态信息作为成员。

对于面向消息的套接字,传入消息将放置在缓冲区中,最大大小为缓冲区的总大小。 SocketAsyncEventArgs.CountSocketAsyncEventArgs.Offset 属性确定数据在缓冲区中的位置以及数据量。

方法ReceiveMessageFromAsyncPacketInformation首次为给定 Socket调用套接字选项时自动将其设置为 true 。 但是, IPPacketInformation 对象仅对在设置套接字选项后到达本地计算机的数据包有效。 如果在套接字通过 方法显式绑定到本地终结点 (或隐式地由 Bind 、、 ConnectAsyncSendToSendToAsync 方法之一) 和对 方法的第一Connect次调用ReceiveMessageFromAsync之间发送数据包,则对 ReceiveMessageFromAsync 方法的调用将导致这些数据包的对象无效IPPacketInformation

为了确保所有 IPPacketInformation 对象都有效,应用程序应先将 PacketInformation 套接字选项设置为true ,然后再使用 SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) 方法将其绑定到本地终结点。

如果应用程序需要知道数据报是使用单播、多播还是广播地址发送的,则可以检查生成的 IPPacketInformation 对象。

另请参阅

适用于

ReceiveMessageFromAsync(ArraySegment<Byte>, EndPoint)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

接收数据并返回有关邮件发件人的其他信息。

public:
 System::Threading::Tasks::Task<System::Net::Sockets::SocketReceiveMessageFromResult> ^ ReceiveMessageFromAsync(ArraySegment<System::Byte> buffer, System::Net::EndPoint ^ remoteEndPoint);
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (ArraySegment<byte> buffer, System.Net.EndPoint remoteEndPoint);
member this.ReceiveMessageFromAsync : ArraySegment<byte> * System.Net.EndPoint -> System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As ArraySegment(Of Byte), remoteEndPoint As EndPoint) As Task(Of SocketReceiveMessageFromResult)

参数

buffer
ArraySegment<Byte>

接收的数据的缓冲区。

remoteEndPoint
EndPoint

与远程主机的终结点类型相同的终结点。

返回

完成的异步任务,其中包含 SocketReceiveMessageFromResult 接收的字节数和有关发送主机的其他信息。

例外

Socket 对象已关闭。

remoteEndPointnull

在执行此操作之前,必须调用 Bind 方法。

适用于

ReceiveMessageFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

接收数据并返回有关邮件发件人的其他信息。

public:
 System::Threading::Tasks::Task<System::Net::Sockets::SocketReceiveMessageFromResult> ^ ReceiveMessageFromAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEndPoint);
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint);
member this.ReceiveMessageFromAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags, remoteEndPoint As EndPoint) As Task(Of SocketReceiveMessageFromResult)

参数

buffer
ArraySegment<Byte>

接收的数据的缓冲区。

socketFlags
SocketFlags

SocketFlags 值的按位组合,将在接收数据时使用。

remoteEndPoint
EndPoint

与远程主机的终结点类型相同的终结点。

返回

完成的异步任务,其中包含 SocketReceiveMessageFromResult 接收的字节数和有关发送主机的其他信息。

例外

Socket 对象已关闭。

remoteEndPointnull

在执行此操作之前,必须调用 Bind 方法。

适用于

ReceiveMessageFromAsync(Memory<Byte>, EndPoint, CancellationToken)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

接收数据并返回有关邮件发件人的其他信息。

public System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (Memory<byte> buffer, System.Net.EndPoint remoteEndPoint, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveMessageFromAsync : Memory<byte> * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As Memory(Of Byte), remoteEndPoint As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of SocketReceiveMessageFromResult)

参数

buffer
Memory<Byte>

接收的数据的缓冲区。

remoteEndPoint
EndPoint

与远程主机的终结点类型相同的终结点。

cancellationToken
CancellationToken

应取消可用于指示异步操作的取消令牌。

返回

完成的异步任务,其中包含 SocketReceiveMessageFromResult 接收的字节数和有关发送主机的其他信息。

例外

Socket 对象已关闭。

remoteEndPointnull

在执行此操作之前,必须调用 Bind 方法。

取消令牌已取消。 此异常存储在返回的任务中。

适用于

ReceiveMessageFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs
Source:
Socket.Tasks.cs

接收数据并返回有关邮件发件人的其他信息。

public System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult> ReceiveMessageFromAsync (Memory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveMessageFromAsync : Memory<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveMessageFromResult>
Public Function ReceiveMessageFromAsync (buffer As Memory(Of Byte), socketFlags As SocketFlags, remoteEndPoint As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of SocketReceiveMessageFromResult)

参数

buffer
Memory<Byte>

接收的数据的缓冲区。

socketFlags
SocketFlags

SocketFlags 值的按位组合,将在接收数据时使用。

remoteEndPoint
EndPoint

与远程主机的终结点类型相同的终结点。

cancellationToken
CancellationToken

应取消可用于指示异步操作的取消令牌。

返回

完成的异步任务,其中包含 SocketReceiveMessageFromResult 接收的字节数和有关发送主机的其他信息。

例外

Socket 对象已关闭。

remoteEndPointnull

在执行此操作之前,必须调用 Bind 方法。

取消令牌已取消。 此异常存储在返回的任务中。

适用于