Socket.EndReceiveFrom(IAsyncResult, EndPoint) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從指定的端點結束暫止的非同步讀取。
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) 的狀態資訊和任何使用者定義的資料。
傳回
如果成功,則傳回接收的位元組數目。 如果不成功,則傳回 0。
例外狀況
asyncResult
為 null
。
asyncResult
不會經由對 BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object) 方法的呼叫傳回。
僅限 .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 並將其轉換成 IPEndPoint。
IPEndPoint.Address使用方法來取得IP位址和 IPEndPoint.Port 方法來取得埠號碼。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。