Socket.EndReceiveFrom(IAsyncResult, EndPoint) 方法

定義

從指定的端點結束暫止的非同步讀取。

public:
 int EndReceiveFrom(IAsyncResult ^ asyncResult, System::Net::EndPoint ^ % endPoint);
public int EndReceiveFrom (IAsyncResult asyncResult, ref System.Net.EndPoint endPoint);
member this.EndReceiveFrom : IAsyncResult * EndPoint -> int
Public Function EndReceiveFrom (asyncResult As IAsyncResult, ByRef endPoint As EndPoint) As Integer

參數

asyncResult
IAsyncResult

IAsyncResult,存放此非同步作業 (Asynchronous Operation) 的狀態資訊和任何使用者定義的資料。

endPoint
EndPoint

來源 EndPoint

傳回

如果成功,則傳回接收的位元組數目。 如果不成功,則傳回 0。

例外狀況

asyncResultnull

先前已針對非同步讀取呼叫 EndReceiveFrom(IAsyncResult, EndPoint)

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

-或-

只限 .NET 7+ : Socket 已關閉 。

僅限 .NET Framework、.NET Core 和 .NET 5-6:Socket已關閉 。

備註

重要

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

EndReceiveFrom 完成 由啟動 BeginReceiveFrom的作業。 您必須傳遞 IAsyncResult 比對呼叫所建立的 BeginReceiveFrom

方法 EndReceiveFrom 會封鎖,直到數據可用為止。 如果您使用無連線通訊協定, EndReceiveFrom 將會讀取傳入網路緩衝區中可用的第一個加入佇列數據報。 如果您使用連接導向的通訊協定,EndReceiveFrom方法會讀取的數據量,最多可達您在 方法的 參數BeginReceiveFrom中指定的size位元組數目。 如果遠端主機 Socket 關閉與 Shutdown 方法的連線,而且已收到所有可用的數據,則 EndReceiveFrom 方法會立即完成,並傳回零個字節。 若要取得接收的數據,請呼叫 AsyncState 物件的 方法 IAsyncResult ,並擷取包含在結果狀態物件中的緩衝區。 若要識別原始主機,請擷取 , EndPoint 並將其轉換成 IPEndPointIPEndPoint.Address使用方法來取得IP位址和 IPEndPoint.Port 方法來取得埠號碼。

注意

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

注意

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

適用於