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

開始從指定的網路裝置非同步接收資料。

C#
public bool ReceiveFromAsync(System.Net.Sockets.SocketAsyncEventArgs e);

參數

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

另請參閱

適用於

.NET 10 和其他版本
產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

ReceiveFromAsync(ArraySegment<Byte>, EndPoint)

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs

接收數據並傳回傳送主機的端點。

C#
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveFromResult> ReceiveFromAsync(ArraySegment<byte> buffer, System.Net.EndPoint remoteEndPoint);

參數

buffer
ArraySegment<Byte>

所接收數據的緩衝區。

remoteEndPoint
EndPoint

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

傳回

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

例外狀況

remoteEndPointnull

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

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

適用於

.NET 10 和其他版本
產品 版本
.NET 7, 8, 9, 10

ReceiveFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs

接收數據並傳回傳送主機的端點。

C#
public System.Threading.Tasks.Task<System.Net.Sockets.SocketReceiveFromResult> ReceiveFromAsync(ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEndPoint);

參數

buffer
ArraySegment<Byte>

所接收數據的緩衝區。

socketFlags
SocketFlags

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

remoteEndPoint
EndPoint

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

傳回

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

例外狀況

remoteEndPointnull

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

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

適用於

.NET 10 和其他版本
產品 版本
.NET 6, 7, 8, 9, 10

ReceiveFromAsync(Memory<Byte>, EndPoint, CancellationToken)

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs

接收數據並傳回傳送主機的端點。

C#
public System.Threading.Tasks.ValueTask<System.Net.Sockets.SocketReceiveFromResult> ReceiveFromAsync(Memory<byte> buffer, System.Net.EndPoint remoteEndPoint, System.Threading.CancellationToken cancellationToken = default);

參數

buffer
Memory<Byte>

所接收數據的緩衝區。

remoteEndPoint
EndPoint

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

cancellationToken
CancellationToken

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

傳回

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

例外狀況

remoteEndPointnull

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

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

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

適用於

.NET 10 和其他版本
產品 版本
.NET 7, 8, 9, 10

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

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs

接收數據並傳回傳送主機的端點。

C#
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);

參數

buffer
Memory<Byte>

所接收數據的緩衝區。

socketFlags
SocketFlags

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

remoteEndPoint
EndPoint

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

cancellationToken
CancellationToken

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

傳回

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

例外狀況

remoteEndPointnull

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

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

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

適用於

.NET 10 和其他版本
產品 版本
.NET 6, 7, 8, 9, 10

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

來源:
Socket.Tasks.cs
來源:
Socket.Tasks.cs

使用指定的 SocketFlags,接收資料包至資料緩衝區中,並儲存端點。

C#
public System.Threading.Tasks.ValueTask<int> ReceiveFromAsync(Memory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress receivedAddress, System.Threading.CancellationToken cancellationToken = default);

參數

buffer
Memory<Byte>

所接收數據的緩衝區。

socketFlags
SocketFlags

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

receivedAddress
SocketAddress

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

cancellationToken
CancellationToken

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

傳回

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

例外狀況

receivedAddressnull

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

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

適用於

.NET 10 和其他版本
產品 版本
.NET 8, 9, 10