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 中的網路追蹤。
適用於
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應