Socket.EndReceive 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
結束一個待處理的非同步讀取。
多載
| 名稱 | Description |
|---|---|
| EndReceive(IAsyncResult) |
結束一個待處理的非同步讀取。 |
| EndReceive(IAsyncResult, SocketError) |
結束一個待處理的非同步讀取。 |
EndReceive(IAsyncResult)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
結束一個待處理的非同步讀取。
public:
int EndReceive(IAsyncResult ^ asyncResult);
public int EndReceive(IAsyncResult asyncResult);
member this.EndReceive : IAsyncResult -> int
Public Function EndReceive (asyncResult As IAsyncResult) As Integer
參數
- asyncResult
- IAsyncResult
一個 IAsyncResult 儲存狀態資訊及使用者定義資料的非同步操作。
傳回
接收的位元組總數。 該方法僅在請求零位元組或因對等套接字執行優雅關機而無更多位元組可用時回傳零(0)。 若請求零位元組,接收操作可能立即完成,或直到至少有一個位元組可用後才完成(但不會消耗任何資料)。
例外狀況
asyncResult 為 null。
asyncResult 呼叫方法時未回傳 BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) 。
僅支援 .NET Framework、.NET Core 及 .NET 5-6: Socket 已關閉。
備註
這很重要
這是一個相容性 API。 我們不建議使用 APM (Begin* 和 End*)方法來進行新開發。 相反地,使用 Task基於 的等價函數。
EndReceive 完成由 開始的 BeginReceive運算。 你需要傳遞 IAsyncResult 由配對 BeginReceive 呼叫創建的。
此 EndReceive 方法會封鎖直到資料可用。 如果你使用無連接協定, EndReceive 會讀取第一個已排隊的資料報,存放在進入網路緩衝區中。 如果你使用連線導向協定,該EndReceive方法會讀取你在參數中sizeBeginReceive指定的位元組數內的可用資料。 如果遠端主機關閉 Socket 該方法的 Shutdown 連線,且所有可用資料都已接收完畢, EndReceive 該方法將立即完成並回傳零位元組。
備註
如果你收到 SocketException,請使用該 SocketException.ErrorCode 屬性取得特定的錯誤代碼。
備註
當該執行緒退出時,所有由特定執行緒發起的 I/O 都會被取消。 待處理的非同步操作若執行緒在執行完成前退出,可能會失敗。
備註
當您在應用程式中啟用網路追蹤時,此成員會輸出追蹤資訊。 欲了解更多資訊,請參閱 .NET Framework 中的網路追蹤。
另請參閱
- BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- IAsyncResult
- AsyncState
- Shutdown(SocketShutdown)
適用於
EndReceive(IAsyncResult, SocketError)
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
- 來源:
- Socket.cs
結束一個待處理的非同步讀取。
public:
int EndReceive(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int EndReceive(IAsyncResult asyncResult, out System.Net.Sockets.SocketError errorCode);
member this.EndReceive : IAsyncResult * SocketError -> int
Public Function EndReceive (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer
參數
- asyncResult
- IAsyncResult
一個 IAsyncResult 儲存狀態資訊及使用者定義資料的非同步操作。
- errorCode
- SocketError
一個 SocketError 儲存套接字錯誤的物件。
傳回
接收的位元組總數。 該方法僅在請求零位元組或因對等套接字執行優雅關機而無更多位元組可用時回傳零(0)。 若請求零位元組,接收操作可能立即完成,或直到至少有一個位元組可用後才完成(但不會消耗任何資料)。
例外狀況
asyncResult 為 null。
asyncResult 呼叫方法時未回傳 BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) 。
僅支援 .NET Framework、.NET Core 及 .NET 5-6: Socket 已關閉。
備註
這很重要
這是一個相容性 API。 我們不建議使用 APM (Begin* 和 End*)方法來進行新開發。 相反地,使用 Task基於 的等價函數。
EndReceive 完成由 開始的 BeginReceive運算。 你需要傳遞 IAsyncResult 由配對 BeginReceive 呼叫創建的。
此 EndReceive 方法會封鎖直到資料可用。 如果你使用無連接協定, EndReceive 會讀取第一個已排隊的資料報,存放在進入網路緩衝區中。 如果你使用連線導向協定,該EndReceive方法會讀取你在參數中sizeBeginReceive指定的位元組數內的可用資料。 如果遠端主機關閉 Socket 該方法的 Shutdown 連線,且所有可用資料都已接收完畢, EndReceive 該方法將立即完成並回傳零位元組。
備註
如果你收到 SocketException,請使用該 SocketException.ErrorCode 屬性取得特定的錯誤代碼。
備註
當該執行緒退出時,所有由特定執行緒發起的 I/O 都會被取消。 待處理的非同步操作若執行緒在執行完成前退出,可能會失敗。
備註
當您在應用程式中啟用網路追蹤時,此成員會輸出追蹤資訊。 欲了解更多資訊,請參閱 .NET Framework 中的網路追蹤。
另請參閱
- BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- IAsyncResult
- AsyncState
- Shutdown(SocketShutdown)