Socket.BeginReceiveMessageFrom 方法

定義

使用指定的 SocketFlags,開始以非同步方式接收指定位元組數目的資料至資料緩衝區所指定位置,並儲存端點和封包資訊。

public:
 IAsyncResult ^ BeginReceiveMessageFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceiveMessageFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceiveMessageFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginReceiveMessageFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceiveMessageFrom (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult

參數

buffer
Byte[]

Byte 型別的陣列,為收到資料的存放位置。

offset
Int32

buffer 參數中要儲存資料的以零起始的位置。

size
Int32

要接收的位元組數。

socketFlags
SocketFlags

SocketFlags 值的位元組合。

remoteEP
EndPoint

與同步接收上要更新之遠端主機端點相同類型的參考 EndPoint

callback
AsyncCallback

AsyncCallback 委派。

state
Object

物件,包含這個要求的狀態資訊。

傳回

參考非同步讀取的 IAsyncResult

例外狀況

buffernull

-或-

remoteEPnull

.NET Framework 和 .NET 5 和更早版本:嘗試存取套接字時發生錯誤。

offset 小於 0。

-或-

offset 大於 buffer 的長度。

-或-

size 小於 0。

-或-

size 大於 buffer 的長度減去 offset 參數的值。

備註

重要

這是相容性 API。 不建議使用 APM (Begin*End*) 方法來進行新的開發。 請改用型對 Task等專案。

您可以傳遞實作 AsyncCallbackBeginReceiveMessageFrom 的回呼,以取得作業完成的通知。 請注意,如果基礎網路堆疊以同步方式完成作業,則會在呼叫 BeginReceiveMessageFrom期間內嵌執行回呼。 在此情況下, CompletedSynchronously 傳回 IAsyncResult 的 屬性會設定為 true ,以指出方法已同步完成。 AsyncState使用 的 IAsyncResult 屬性,取得傳遞至 BeginReceiveMessageFrom 方法的狀態物件。

異步 BeginReceiveMessageFrom 操作必須藉由呼叫 EndReceiveMessageFrom 方法來完成。 一般而言,委派會叫 AsyncCallback 用 方法。 EndReceiveMessageFrom 將會封鎖呼叫線程,直到作業完成為止。

若要取消暫止 BeginReceiveMessageFrom的 ,請呼叫 Close 方法。

此方法會將數據讀取至 buffer 參數,並擷取傳送數據的遠端主機端點,以及所接收封包的相關信息。 如需如何擷取此端點的資訊,請參閱 EndReceiveMessageFrom。 如果您想要從未知主機或多部主機異步接收無連線數據報,這個方法最有用。

注意

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。

注意

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

注意

系統會快 Socket 取異步方法 (安全性內容、模擬使用者和呼叫內容) 的執行內容。 在第一次使用特定內容 (特定異步 Socket 方法、特定 Socket 實例和特定回呼) 之後,該內容的後續使用將會看到效能改善。

適用於