Socket.ReceiveMessageFromAsync 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
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
参数
要用于此异步套接字操作的 SocketAsyncEventArgs 对象。
返回
如果 I/O 操作挂起,则为 true
。 操作完成时,将引发 e
参数的 Completed 事件。
如果 I/O 操作同步完成,则为 false
。 在这种情况下,将不会引发 e
参数的 Completed 事件,并且可能在方法调用返回后立即检查作为参数传递的 e
对象以检索操作的结果。
例外
RemoteEndPoint 不能为 null。
尝试访问套接字时出错。
注解
方法 ReceiveMessageFromAsync 主要用于在无连接套接字上接收消息数据。 套接字的本地地址必须已知。 此方法只能与数据报和原始套接字一起使用。 在调用此方法之前,必须使用设置为 Dgram 或 Raw 的套接字类型初始化套接字。 这可以在使用 Socket构造套接字时完成。
调用方必须将 属性设置为SocketAsyncEventArgs.RemoteEndPointEndPoint与远程主机的终结点类型相同的 。 成功接收到实际远程终结点后,属性将更新。
对象上的 System.Net.Sockets.SocketAsyncEventArgs 以下属性和事件是成功调用此方法所必需的:
调用方可以在调用 ReceiveMessageFromAsync 方法之前将 属性设置为SocketAsyncEventArgs.UserToken所需的任何用户状态对象,以便在回调方法中检索信息。 如果回调需要比单个对象更多的信息,则可以创建一个小类来保存其他所需的状态信息作为成员。
对于面向消息的套接字,传入消息将放置在缓冲区中,最大大小为缓冲区的总大小。 SocketAsyncEventArgs.Count和 SocketAsyncEventArgs.Offset 属性确定数据在缓冲区中的位置以及数据量。
方法ReceiveMessageFromAsync在PacketInformation首次为给定 Socket调用套接字选项时自动将其设置为 true
。 但是, IPPacketInformation 对象仅对在设置套接字选项后到达本地计算机的数据包有效。 如果在套接字通过 方法显式绑定到本地终结点 (或隐式地由 Bind 、、 ConnectAsyncSendTo或 SendToAsync 方法之一) 和对 方法的第一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 对象已关闭。
remoteEndPoint
为 null
。
在执行此操作之前,必须调用 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 对象已关闭。
remoteEndPoint
为 null
。
在执行此操作之前,必须调用 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)
参数
- remoteEndPoint
- EndPoint
与远程主机的终结点类型相同的终结点。
- cancellationToken
- CancellationToken
应取消可用于指示异步操作的取消令牌。
返回
完成的异步任务,其中包含 SocketReceiveMessageFromResult 接收的字节数和有关发送主机的其他信息。
例外
Socket 对象已关闭。
remoteEndPoint
为 null
。
在执行此操作之前,必须调用 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)
参数
- socketFlags
- SocketFlags
SocketFlags 值的按位组合,将在接收数据时使用。
- remoteEndPoint
- EndPoint
与远程主机的终结点类型相同的终结点。
- cancellationToken
- CancellationToken
应取消可用于指示异步操作的取消令牌。
返回
完成的异步任务,其中包含 SocketReceiveMessageFromResult 接收的字节数和有关发送主机的其他信息。
例外
Socket 对象已关闭。
remoteEndPoint
为 null
。
在执行此操作之前,必须调用 Bind 方法。
取消令牌已取消。 此异常存储在返回的任务中。