次の方法で共有


Socket.EndReceive メソッド

定義

保留中の非同期読み取りを終了します。

オーバーロード

名前 説明
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 バイトが要求された場合、またはピア ソケットが正常なシャットダウンを実行したために使用可能なバイトがなくなった場合にのみ、ゼロ (0) を返します。 0 バイトが要求された場合、受信操作はすぐに完了するか、少なくとも 1 バイトが使用可能になるまで完了しない場合があります (ただし、データは使用しません)。

例外

asyncResultnullです。

asyncResult は、 BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) メソッドの呼び出しによって返されませんでした。

EndReceive(IAsyncResult) は、以前に非同期読み取り用に呼び出されました。

ソケットにアクセスしようとしたときにエラーが発生しました。

-又は-

.NET 7 以降のみ: Socket が閉じられました。

.NET Framework、.NET Core、および .NET 5-6 のみ: Socket が閉じられました。

注釈

Important

これは互換性 API です。 新しい開発には APM (Begin* および End*) メソッドを使用しないことをお勧めします。 代わりに、 Task ベースの同等の値を使用します。

EndReceive は、 BeginReceiveによって開始された操作を完了します。 一致するBeginReceive呼び出しによって作成されたIAsyncResultを渡す必要があります。

EndReceive メソッドは、データが使用可能になるまでブロックされます。 コネクションレス プロトコルを使用している場合、 EndReceive は受信ネットワーク バッファーで使用可能な最初のエンキューされたデータグラムを読み取ります。 接続指向プロトコルを使用している場合、EndReceive メソッドは、BeginReceive メソッドの size パラメーターで指定したバイト数までのデータを読み取ります。 リモート ホストが Shutdown メソッドとのSocket接続をシャットダウンし、使用可能なすべてのデータを受信した場合、EndReceive メソッドはすぐに完了し、0 バイトが返されます。

SocketExceptionを受け取った場合は、SocketException.ErrorCode プロパティを使用して特定のエラー コードを取得します。

特定のスレッドによって開始されたすべての I/O は、そのスレッドが終了すると取り消されます。 保留中の非同期操作は、操作が完了する前にスレッドが終了した場合に失敗する可能性があります。

このメンバーは、アプリケーションでネットワーク トレースを有効にすると、トレース情報を出力します。 詳細については、「 .NET Framework でのネットワーク トレース」を参照してください。

こちらもご覧ください

適用対象

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 バイトが要求された場合、またはピア ソケットが正常なシャットダウンを実行したために使用可能なバイトがなくなった場合にのみ、ゼロ (0) を返します。 0 バイトが要求された場合、受信操作はすぐに完了するか、少なくとも 1 バイトが使用可能になるまで完了しない場合があります (ただし、データは使用しません)。

例外

asyncResultnullです。

asyncResult は、 BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) メソッドの呼び出しによって返されませんでした。

EndReceive(IAsyncResult) は、以前に非同期読み取り用に呼び出されました。

ソケットにアクセスしようとしたときにエラーが発生しました。

-又は-

.NET 7 以降のみ: Socket が閉じられました。

.NET Framework、.NET Core、および .NET 5-6 のみ: Socket が閉じられました。

注釈

Important

これは互換性 API です。 新しい開発には APM (Begin* および End*) メソッドを使用しないことをお勧めします。 代わりに、 Task ベースの同等の値を使用します。

EndReceive は、 BeginReceiveによって開始された操作を完了します。 一致するBeginReceive呼び出しによって作成されたIAsyncResultを渡す必要があります。

EndReceive メソッドは、データが使用可能になるまでブロックされます。 コネクションレス プロトコルを使用している場合、 EndReceive は受信ネットワーク バッファーで使用可能な最初のエンキューされたデータグラムを読み取ります。 接続指向プロトコルを使用している場合、EndReceive メソッドは、BeginReceive メソッドの size パラメーターで指定したバイト数までのデータを読み取ります。 リモート ホストが Shutdown メソッドとのSocket接続をシャットダウンし、使用可能なすべてのデータを受信した場合、EndReceive メソッドはすぐに完了し、0 バイトが返されます。

SocketExceptionを受け取った場合は、SocketException.ErrorCode プロパティを使用して特定のエラー コードを取得します。

特定のスレッドによって開始されたすべての I/O は、そのスレッドが終了すると取り消されます。 保留中の非同期操作は、操作が完了する前にスレッドが終了した場合に失敗する可能性があります。

このメンバーは、アプリケーションでネットワーク トレースを有効にすると、トレース情報を出力します。 詳細については、「 .NET Framework でのネットワーク トレース」を参照してください。

こちらもご覧ください

適用対象