Socket.ReceiveFromAsync 方法

定義

多載

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)

來源:
Socket.cs
來源:
Socket.cs
來源:
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

參數

e
SocketAsyncEventArgs

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.CountSocketAsyncEventArgs.Offset 屬性會決定在緩衝區中放置數據的位置,以及數據量。

對於位元組數據流樣式套接字,傳入的數據會放在緩衝區中,直到填滿緩衝區、關閉連接,或內部緩衝的數據耗盡為止。 SocketAsyncEventArgs.CountSocketAsyncEventArgs.Offset 屬性會決定在緩衝區中放置數據的位置,以及數據量。

另請參閱

適用於

ReceiveFromAsync(ArraySegment<Byte>, EndPoint)

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
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 包含接收的位元組數目和傳送主機的端點。

例外狀況

remoteEndPointnull

嘗試存取通訊端時發生錯誤。

呼叫堆疊中的呼叫端沒有所需的使用權限。

適用於

ReceiveFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
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 包含接收的位元組數目和傳送主機的端點。

例外狀況

remoteEndPointnull

嘗試存取通訊端時發生錯誤。

呼叫堆疊中的呼叫端沒有所需的使用權限。

適用於

ReceiveFromAsync(Memory<Byte>, EndPoint, CancellationToken)

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
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)

參數

buffer
Memory<Byte>

所接收數據的緩衝區。

remoteEndPoint
EndPoint

與遠端主機端點相同類型的端點。

cancellationToken
CancellationToken

可用來通知應該取消非同步作業的取消權杖。

傳回

異步工作, SocketReceiveFromResult 包含接收的位元組數目和傳送主機的端點。

例外狀況

remoteEndPointnull

嘗試存取通訊端時發生錯誤。

呼叫堆疊中的呼叫端沒有所需的使用權限。

取消標記已取消。 此例外狀況會儲存在傳回的工作中。

適用於

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

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
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)

參數

buffer
Memory<Byte>

所接收數據的緩衝區。

socketFlags
SocketFlags

SocketFlags 值的位元組合,將在接收數據時使用。

remoteEndPoint
EndPoint

與遠端主機端點相同類型的端點。

cancellationToken
CancellationToken

可用來通知應該取消非同步作業的取消權杖。

傳回

異步工作, SocketReceiveFromResult 包含接收的位元組數目和傳送主機的端點。

例外狀況

remoteEndPointnull

嘗試存取通訊端時發生錯誤。

呼叫堆疊中的呼叫端沒有所需的使用權限。

取消標記已取消。 此例外狀況會儲存在傳回的工作中。

適用於

ReceiveFromAsync(Memory<Byte>, SocketFlags, SocketAddress, CancellationToken)

來源:
Socket.Tasks.cs
來源:
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)

參數

buffer
Memory<Byte>

所接收數據的緩衝區。

socketFlags
SocketFlags

接收數據時將使用之值的位元組合 SocketFlags

receivedAddress
SocketAddress

實例 SocketAddress ,這個實例會在此方法傳回時,以遠端對等的值進行更新。

cancellationToken
CancellationToken

可用來通知應該取消非同步作業的取消權杖。

傳回

異步工作, SocketReceiveFromResult 包含接收的位元組數目和傳送主機的端點。

例外狀況

receivedAddressnull

嘗試存取通訊端時發生錯誤。

取消標記已取消。 此例外狀況會儲存在傳回的工作中。

適用於