Socket.EndReceive 方法

定義

結束擱置的非同步讀取。

多載

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) 的狀態資訊和任何使用者定義的資料。

傳回

收到的位元組數目。

例外狀況

asyncResultnull

先前已針對非同步讀取呼叫 EndReceive(IAsyncResult)

嘗試存取通訊端時發生錯誤。

-或-

只限 .NET 7+ : Socket 已關閉 。

僅限 .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 中的網路追蹤

另請參閱

適用於

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 物件,儲存通訊端錯誤。

傳回

收到的位元組數目。

例外狀況

asyncResultnull

先前已針對非同步讀取呼叫 EndReceive(IAsyncResult)

嘗試存取通訊端時發生錯誤。

-或-

只限 .NET 7+ : Socket 已關閉 。

僅限 .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 中的網路追蹤

另請參閱

適用於