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 啟動的作業。 您必須傳遞 IAsyncResultBeginReceiveFrom 對呼叫所建立的 。

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

注意

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

注意

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

適用於