Socket.ReceiveFromAsync 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
ReceiveFromAsync(SocketAsyncEventArgs) |
开始从指定网络设备中异步接收数据。 |
ReceiveFromAsync(ArraySegment<Byte>, EndPoint) |
接收数据并返回发送主机的终结点。 |
ReceiveFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint) |
接收数据并返回发送主机的终结点。 |
ReceiveFromAsync(Memory<Byte>, EndPoint, CancellationToken) |
接收数据并返回发送主机的终结点。 |
ReceiveFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken) |
接收数据并返回发送主机的终结点。 |
ReceiveFromAsync(Memory<Byte>, SocketFlags, SocketAddress, CancellationToken) |
使用指定的 SocketFlags 将数据报接收到数据缓冲区并存储终结点。 |
ReceiveFromAsync(SocketAsyncEventArgs)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
开始从指定网络设备中异步接收数据。
public:
bool ReceiveFromAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveFromAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveFromAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveFromAsync (e As SocketAsyncEventArgs) As Boolean
参数
要用于此异步套接字操作的 SocketAsyncEventArgs 对象。
返回
如果 I/O 操作挂起,则为 true
。 操作完成时,将引发 e
参数的 Completed 事件。
如果 I/O 操作同步完成,则为 false
。 在这种情况下,将不会引发 e
参数的 Completed 事件,并且可能在方法调用返回后立即检查作为参数传递的 e
对象以检索操作的结果。
例外
RemoteEndPoint 不能为 null。
已经在使用 e
参数中指定的 SocketAsyncEventArgs 对象执行套接字操作。
尝试访问套接字时出错。
注解
方法 ReceiveFromAsync 主要用于接收无连接套接字上的数据。 套接字的本地地址必须是已知的。
调用方必须将 属性设置为SocketAsyncEventArgs.RemoteEndPointEndPoint与远程主机的终结点类型相同的 。 成功接收到实际远程终结点后,属性将更新。
SocketAsyncEventArgs.SocketFlags参数上的 e
属性为 Window Sockets 服务提供程序提供有关读取请求的其他信息。 有关如何使用此参数的详细信息,请参阅 System.Net.Sockets.SocketFlags。
若要成功调用此方法, System.Net.Sockets.SocketAsyncEventArgs 对象上需要以下属性和事件:
调用方可以在调用ReceiveFromAsync方法之前将 SocketAsyncEventArgs.UserToken 属性设置为所需的任何用户状态对象,以便可在回调方法中检索信息。 如果回调需要比单个对象更多的信息,则可以创建一个小类来保存其他所需的状态信息作为成员。
对于面向消息的套接字,传入消息将放入缓冲区中,最大大小为缓冲区的总大小。 SocketAsyncEventArgs.Count和 SocketAsyncEventArgs.Offset 属性确定数据在缓冲区中的放置位置和数据量。
对于字节流样式的套接字,传入数据将放入缓冲区中,直到填充缓冲区、关闭连接或内部缓冲的数据耗尽。 SocketAsyncEventArgs.Count和 SocketAsyncEventArgs.Offset 属性确定数据在缓冲区中的放置位置和数据量。
另请参阅
适用于
ReceiveFromAsync(ArraySegment<Byte>, EndPoint)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
接收数据并返回发送主机的终结点。
public:
System::Threading::Tasks::Task<System::Net::Sockets::SocketReceiveFromResult> ^ ReceiveFromAsync(ArraySegment<System::Byte> buffer, System::Net::EndPoint ^ remoteEndPoint);
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveFromResult> ReceiveFromAsync (ArraySegment<byte> buffer, System.Net.EndPoint remoteEndPoint);
member this.ReceiveFromAsync : ArraySegment<byte> * System.Net.EndPoint -> System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveFromResult>
Public Function ReceiveFromAsync (buffer As ArraySegment(Of Byte), remoteEndPoint As EndPoint) As Task(Of SocketReceiveFromResult)
参数
- buffer
- ArraySegment<Byte>
接收的数据的缓冲区。
- remoteEndPoint
- EndPoint
与远程主机终结点的类型相同的终结点。
返回
完成的异步任务,其中包含 SocketReceiveFromResult 接收的字节数和发送主机的终结点。
例外
remoteEndPoint
为 null
。
尝试访问套接字时出错。
调用堆栈中的调用方没有所需的权限。
适用于
ReceiveFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
接收数据并返回发送主机的终结点。
public:
System::Threading::Tasks::Task<System::Net::Sockets::SocketReceiveFromResult> ^ ReceiveFromAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEndPoint);
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveFromResult> ReceiveFromAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint);
member this.ReceiveFromAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveFromResult>
Public Function ReceiveFromAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags, remoteEndPoint As EndPoint) As Task(Of SocketReceiveFromResult)
参数
- buffer
- ArraySegment<Byte>
接收的数据的缓冲区。
- socketFlags
- SocketFlags
接收数据时将使用的 SocketFlags 值的按位组合。
- remoteEndPoint
- EndPoint
与远程主机终结点的类型相同的终结点。
返回
完成的异步任务,其中包含 SocketReceiveFromResult 接收的字节数和发送主机的终结点。
例外
remoteEndPoint
为 null
。
尝试访问套接字时出错。
调用堆栈中的调用方没有所需的权限。
适用于
ReceiveFromAsync(Memory<Byte>, EndPoint, CancellationToken)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
接收数据并返回发送主机的终结点。
public System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveFromResult> ReceiveFromAsync (Memory<byte> buffer, System.Net.EndPoint remoteEndPoint, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveFromAsync : Memory<byte> * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveFromResult>
Public Function ReceiveFromAsync (buffer As Memory(Of Byte), remoteEndPoint As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of SocketReceiveFromResult)
参数
- remoteEndPoint
- EndPoint
与远程主机终结点的类型相同的终结点。
- cancellationToken
- CancellationToken
应取消可用于指示异步操作的取消令牌。
返回
完成的异步任务,其中包含 SocketReceiveFromResult 接收的字节数和发送主机的终结点。
例外
remoteEndPoint
为 null
。
尝试访问套接字时出错。
调用堆栈中的调用方没有所需的权限。
取消令牌已取消。 此异常存储在返回的任务中。
适用于
ReceiveFromAsync(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.SocketReceiveFromResult> ReceiveFromAsync (Memory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveFromAsync : Memory<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveFromResult>
Public Function ReceiveFromAsync (buffer As Memory(Of Byte), socketFlags As SocketFlags, remoteEndPoint As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of SocketReceiveFromResult)
参数
- socketFlags
- SocketFlags
接收数据时将使用的 SocketFlags 值的按位组合。
- remoteEndPoint
- EndPoint
与远程主机终结点的类型相同的终结点。
- cancellationToken
- CancellationToken
应取消可用于指示异步操作的取消令牌。
返回
完成的异步任务,其中包含 SocketReceiveFromResult 接收的字节数和发送主机的终结点。
例外
remoteEndPoint
为 null
。
尝试访问套接字时出错。
调用堆栈中的调用方没有所需的权限。
取消令牌已取消。 此异常存储在返回的任务中。
适用于
ReceiveFromAsync(Memory<Byte>, SocketFlags, SocketAddress, CancellationToken)
- Source:
- Socket.Tasks.cs
- Source:
- Socket.Tasks.cs
使用指定的 SocketFlags 将数据报接收到数据缓冲区并存储终结点。
public System.Threading.Tasks.ValueTask<int> ReceiveFromAsync (Memory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress receivedAddress, System.Threading.CancellationToken cancellationToken = default);
member this.ReceiveFromAsync : Memory<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function ReceiveFromAsync (buffer As Memory(Of Byte), socketFlags As SocketFlags, receivedAddress As SocketAddress, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)
参数
- socketFlags
- SocketFlags
接收数据时将使用的值的按位组合 SocketFlags 。
- receivedAddress
- SocketAddress
一个 SocketAddress 实例,在此方法返回时使用远程对等方的值进行更新。
- cancellationToken
- CancellationToken
应取消可用于指示异步操作的取消令牌。
返回
完成的异步任务,其中包含 SocketReceiveFromResult 接收的字节数和发送主机的终结点。
例外
receivedAddress
为 null
。
尝试访问套接字时出错。
取消令牌已取消。 此异常存储在返回的任务中。