Socket.EndReceive 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
結束擱置的非同步讀取。
多載
EndReceive(IAsyncResult) |
結束擱置的非同步讀取。 |
EndReceive(IAsyncResult, SocketError) |
結束擱置的非同步讀取。 |
EndReceive(IAsyncResult)
- 來源:
- 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,存放此非同步作業 (Asynchronous Operation) 的狀態資訊和任何使用者定義的資料。
傳回
收到的位元組數目。
例外狀況
asyncResult
為 null
。
asyncResult
不會經由對 BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) 方法的呼叫傳回。
先前已針對非同步讀取呼叫 EndReceive(IAsyncResult)。
僅限 .NET Framework、.NET Core 和 .NET 5-6:Socket已關閉 。
備註
重要
這是相容性 API。 不建議使用 APM (Begin*
和 End*
) 方法來進行新的開發。 請改用 Task
以 為基礎的對等專案。
EndReceive 完成 由啟動 BeginReceive的作業。 您必須傳遞 IAsyncResult 比對呼叫所建立的 BeginReceive 。
方法 EndReceive 會封鎖,直到數據可用為止。 如果您使用無連線通訊協定, EndReceive 將會讀取傳入網路緩衝區中可用的第一個加入佇列數據報。 如果您使用連接導向的通訊協定,EndReceive方法會讀取的數據量,最多可達您在 方法的 參數BeginReceive中指定的size
位元組數目。 如果遠端主機 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
結束擱置的非同步讀取。
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,存放此非同步作業 (Asynchronous Operation) 的狀態資訊和任何使用者定義的資料。
- errorCode
- SocketError
SocketError 物件,儲存通訊端錯誤。
傳回
收到的位元組數目。
例外狀況
asyncResult
為 null
。
asyncResult
不會經由對 BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) 方法的呼叫傳回。
先前已針對非同步讀取呼叫 EndReceive(IAsyncResult)。
僅限 .NET Framework、.NET Core 和 .NET 5-6:Socket已關閉 。
備註
重要
這是相容性 API。 不建議使用 APM (Begin*
和 End*
) 方法來進行新的開發。 請改用 Task
以 為基礎的對等專案。
EndReceive 完成 由啟動 BeginReceive的作業。 您必須傳遞 IAsyncResult 比對呼叫所建立的 BeginReceive 。
方法 EndReceive 會封鎖,直到數據可用為止。 如果您使用無連線通訊協定, EndReceive 將會讀取傳入網路緩衝區中可用的第一個加入佇列數據報。 如果您使用連接導向的通訊協定,EndReceive方法會讀取的數據量,最多可達您在 方法的 參數BeginReceive中指定的size
位元組數目。 如果遠端主機 Socket 關閉與 Shutdown 方法的連線,而且已收到所有可用的數據,則 EndReceive 方法會立即完成,並傳回零個字節。
注意
如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。
注意
當該線程結束時,指定的線程所起始的所有 I/O 都會取消。 如果線程在作業完成之前結束,暫止的異步操作可能會失敗。
注意
在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤。
另請參閱
- BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- AsyncCallback
- IAsyncResult
- AsyncState
- Shutdown(SocketShutdown)