Socket.Receive メソッド

定義

バインドされた Socket からデータを受信します。

オーバーロード

Receive(Byte[], Int32, Int32, SocketFlags, SocketError)

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーに格納します。

Receive(Span<Byte>, SocketFlags, SocketError)

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーに格納します。

Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーのリストに格納します。

Receive(Byte[], Int32, SocketFlags)

指定した SocketFlags を使用し、バインドされた Socket から指定したバイト数のデータを受信して受信バッファーに格納します。

Receive(Span<Byte>, SocketFlags)

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーに格納します。

Receive(Byte[], Int32, Int32, SocketFlags)

指定した SocketFlags を使用し、バインドされた Socket から指定したバイト数のデータを受信して、受信バッファー内の指定したオフセット位置に格納します。

Receive(Byte[], SocketFlags)

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーに格納します。

Receive(Span<Byte>)

バインドされた Socket からデータを受信し、受信バッファーに格納します。

Receive(IList<ArraySegment<Byte>>)

バインドされた Socket からデータを受信して、受信バッファーのリストに格納します。

Receive(Byte[])

バインドされた Socket からデータを受信し、受信バッファーに格納します。

Receive(IList<ArraySegment<Byte>>, SocketFlags)

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーのリストに格納します。

Receive(Byte[], Int32, Int32, SocketFlags, SocketError)

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーに格納します。

public:
 int Receive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

パラメーター

buffer
Byte[]

受信したデータの保存場所となる Byte 型の配列。

offset
Int32

受信したデータを格納する、buffer パラメーター内の位置。

size
Int32

受信するバイト数。

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。

errorCode
SocketError

ソケット エラーを格納する SocketError オブジェクト。

戻り値

Int32

受信されたバイト数。

例外

buffernullです。

offset が 0 未満です。

または

offsetbuffer の長さを超えています。

または

size が 0 未満です。

  • または -

size が、buffer の長さから offset パラメーターの値を引いた値を超えています。

socketFlags は、値の有効な組み合わせではありません。

  • または -

LocalEndPoint プロパティが設定されていません。

  • または -

Socket にアクセス中にオペレーティング システム エラーが発生しました。

Socket が閉じられました。

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。

注釈

このメソッドは Receive 、バッファー パラメーターにデータを読み取り、正常に読み取られたバイト数を返します。 接続指向ソケットとコネクションレス ソケットの両方から呼び出 Receive すことができます。

接続指向プロトコルを使用している場合は、呼び出してリモート ホスト接続を確立するかAccept、呼び出ConnectReceive前に着信接続を受け入れる必要があります。 メソッドはReceive、そのメソッドAcceptConnect確立されたリモート ホストから到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、このメソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

読み取り可能なデータがない場合、 Receive タイムアウト値が使用 Socket.ReceiveTimeoutして設定されていない限り、データが使用可能になるまでメソッドはブロックされます。 タイムアウト値を超えた場合、呼び出し ReceiveSocketException. 非ブロッキング モードで、プロトコル スタック バッファーに使用可能なデータがない場合、メソッドはすぐに完了し、ReceiveSocketException.. ソケットへのアクセスを試行しているときにエラーが発生しました。 下記の注釈を参照してください。 このプロパティを Available 使用して、データが読み取り可能かどうかを判断できます。 0 以外の場合 Available は、受信操作を再試行します。

接続指向 Socketを使用している場合、 Receive このメソッドは、size パラメーターで指定されたバイト数まで、使用可能な量のデータを読み取ります。 リモート ホストがメソッドとの接続をSocketシャットダウンし、使用可能なすべてのデータを受信した場合、メソッドはすぐに完了し、Receive0 バイトを返Shutdownします。

コネクションレス Socketを使用している場合は、 Receive メソッドで指定した宛先アドレスからキューに登録された最初のデータグラムが Connect 読み取られます。 受信したデータグラムがパラメーターのサイズより大きい場合は、bufferメッセージのbuffer最初の部分が入力され、余分なデータが失われ、a SocketException がスローされます。

注意

受け取った場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

注意

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

こちらもご覧ください

適用対象

Receive(Span<Byte>, SocketFlags, SocketError)

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーに格納します。

public:
 int Receive(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : Span<byte> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffer As Span(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

パラメーター

buffer
Span<Byte>

受信したデータの保存場所となるバイトのスパン。

socketFlags
SocketFlags

送受信の動作を指定する列挙値のビットごとの組み合わせ。

errorCode
SocketError

このメソッドから制御が戻るときに、ソケットのエラー コードを定義する列挙値の 1 つを格納します。

戻り値

Int32

受信されたバイト数。

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。

注釈

このメソッドは Receive 、バッファー パラメーターにデータを読み取り、正常に読み取られたバイト数を返します。 接続指向ソケットとコネクションレス ソケットの両方から呼び出 Receive すことができます。

このオーバーロードでは、受信バッファーを指定するだけで済みます。 バッファー オフセットの既定値は 0、サイズの既定値はバッファー パラメーターの長さ、値の SocketFlags 既定値は None.

接続指向プロトコルを使用している場合は、リモート ホスト接続を確立するために呼び出すか、Accept呼び出すConnectReceive前に着信接続を受け入れる必要があります。 メソッドはReceive、そのメソッドAcceptConnect確立されたリモート ホストから到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、このメソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

読み取り可能なデータがない場合、 Receive タイムアウト値が使用 Socket.ReceiveTimeoutして設定されていない限り、データが使用可能になるまでメソッドはブロックされます。 タイムアウト値を超えると、呼び出し ReceiveSocketException. 非ブロッキング モードで、プロトコル スタック バッファーに使用可能なデータがない場合、メソッドはすぐに完了し、ReceiveSocketException.. このプロパティを Available 使用して、データが読み取り可能かどうかを判断できます。 0 以外の場合 Available は、受信操作を再試行します。

接続指向 Socketを使用している場合、 Receive メソッドはバッファーのサイズまで、使用可能な限り多くのデータを読み取ります。 リモート ホストがメソッドとの接続をSocketシャットダウンし、使用可能なすべてのデータを受信した場合、メソッドはすぐに完了し、Receive0 バイトを返Shutdownします。

コネクションレス Socketを使用している場合は、 Receive メソッドで指定した宛先アドレスからキューに登録された最初のデータグラムが Connect 読み取られます。 受信したデータグラムがパラメーターのサイズより大きい場合は、bufferメッセージのbuffer最初の部分が入力され、余分なデータが失われ、a SocketException がスローされます。

注意

受け取った場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

注意

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

こちらもご覧ください

適用対象

Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

重要

この API は CLS 準拠ではありません。

CLS 準拠の代替
System.Net.Sockets.Socket.Receive(Byte[], SocketFlags)

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーのリストに格納します。

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
[System.CLSCompliant(false)]
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int
[<System.CLSCompliant(false)>]
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

パラメーター

buffers
IList<ArraySegment<Byte>>

受信したデータを格納する Byte 型の複数の ArraySegment<T> のリスト。

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。

errorCode
SocketError

ソケット エラーを格納する SocketError オブジェクト。

戻り値

Int32

受信されたバイト数。

属性

例外

buffersnullです。

  • または -

buffers.Count が 0 です。

ソケットへのアクセスを試みているときにエラーが発生しました。

Socket が閉じられました。

注釈

このメソッドは、パラメーターにデータを buffers 読み取り、正常に読み取られたバイト数を返します。 接続指向ソケットとコネクションレス ソケットの両方から呼び出すことができます。

このオーバーロードでは、1 つ以上の受信バッファーを指定する必要があります。 この値の既定値NoneSocketFlags .

接続指向プロトコルを使用している場合は、呼び出してリモート ホスト接続を確立するかAccept、呼び出ConnectReceive前に着信接続を受け入れる必要があります。 メソッドはReceive、そのAcceptメソッドでConnect確立されたリモート ホスト接続から到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、このメソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

読み取り可能なデータがない場合、 Receive タイムアウト値が使用 Socket.ReceiveTimeoutして設定されていない限り、データが使用可能になるまでメソッドはブロックされます。 タイムアウト値を超えた場合、呼び出しReceiveSocketExceptionは .. 非ブロッキング モードで、プロトコル スタック バッファーに使用可能なデータがない場合、メソッドはすぐに完了し、ReceiveSocketException.. このプロパティを Available 使用して、データが読み取り可能かどうかを判断できます。 0 以外の場合 Available は、受信操作を再試行します。

接続指向 Socketを使用している場合、 Receive メソッドはバッファーのサイズまで、使用可能な限り多くのデータを読み取ります。 リモート ホストがメソッドとの接続をSocketシャットダウンし、使用可能なすべてのデータを受信した場合、メソッドはすぐに完了し、Receive0 バイトを返Shutdownします。

コネクションレス Socketを使用している場合は、Receive メソッドで指定した宛先アドレスからキューに登録された最初のデータグラムが Connect 読み取られます。 受信したデータグラムがパラメーターのサイズより大きい場合は、buffersメッセージのbuffers最初の部分が入力され、余分なデータが失われ、a SocketException がスローされます。

注意

受け取った場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

注意

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

こちらもご覧ください

適用対象

Receive(Byte[], Int32, SocketFlags)

指定した SocketFlags を使用し、バインドされた Socket から指定したバイト数のデータを受信して受信バッファーに格納します。

public:
 int Receive(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * int * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), size As Integer, socketFlags As SocketFlags) As Integer

パラメーター

buffer
Byte[]

受信したデータの保存場所となる Byte 型の配列。

size
Int32

受信するバイト数。

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。

戻り値

Int32

受信されたバイト数。

例外

buffernullです。

sizebuffer のサイズを超えています。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。

次の例では、検出されたデータbufferを受け取り、次の値を指定しますNoneSocketFlags

// Receive the host home page content and loop until all the data is received.
Int32 bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
strRetPage =  "Default HTML page on ";
strRetPage->Concat( server,  ":\r\n", ASCII->GetString( RecvBytes, 0, bytes ) );
while ( bytes > 0 )
{
   bytes = s->Receive( RecvBytes, RecvBytes->Length, SocketFlags::None );
   strRetPage->Concat( ASCII->GetString( RecvBytes, 0, bytes ) );
}

// Receive the host home page content and loop until all the data is received.
Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
strRetPage = "Default HTML page on " + server + ":\r\n";
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);

while (bytes > 0)
{
  bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
  strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
}

' Receive the host home page content and loop until all the data is received.

'Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)
Dim bytes As Int32 = s.Receive(RecvBytes, RecvBytes.Length, 0)

strRetPage = "Default HTML page on " + server + ":\r\n"
strRetPage = "Default HTML page on " + server + ":" + ControlChars.Lf + ControlChars.NewLine

Dim i As Integer

While bytes > 0

  bytes = s.Receive(RecvBytes, RecvBytes.Length, 0)

  strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes)

End While

注釈

このメソッドは Receive 、パラメーターにデータを buffer 読み取り、正常に読み取られたバイト数を返します。 接続指向ソケットとコネクションレス ソケットの両方から呼び出 Receive すことができます。

このオーバーロードでは、受信バッファー、受信するバイト数、および必要なバイト数のみを指定する必要があります SocketFlags

接続指向プロトコルを使用している場合は、呼び出してリモート ホスト接続を確立するかAccept、呼び出ConnectReceive前に着信接続を受け入れる必要があります。 メソッドはReceive、そのメソッドAcceptConnect確立されたリモート ホストから到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、このメソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

読み取り可能なデータがない場合、 Receive タイムアウト値が使用 Socket.ReceiveTimeoutして設定されていない限り、データが使用可能になるまでメソッドはブロックされます。 タイムアウト値を超えた場合、呼び出し ReceiveSocketException. 非ブロッキング モードで、プロトコル スタック バッファーに使用可能なデータがない場合、メソッドはすぐに Receive 完了し、 SocketException.. このプロパティを Available 使用して、データが読み取り可能かどうかを判断できます。 0 以外の場合 Available は、受信操作を再試行してください。

接続指向 Socketを使用している場合、 Receive メソッドは、パラメーターで指定されたバイト数まで、使用可能な量のデータを size 読み取ります。 リモート ホストがメソッドとの接続をSocketシャットダウンし、使用可能なすべてのデータを受信した場合、メソッドはすぐに完了し、Receive0 バイトを返Shutdownします。

コネクションレス Socketを使用している場合は、 Receive メソッドで指定した宛先アドレスからキューに登録された最初のデータグラムが Connect 読み取られます。 受信したデータグラムがパラメーターのサイズより大きい場合は、bufferメッセージのbuffer最初の部分が入力され、余分なデータが失われ、a SocketException がスローされます。

注意

受け取った場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

注意

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

こちらもご覧ください

適用対象

Receive(Span<Byte>, SocketFlags)

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーに格納します。

public:
 int Receive(Span<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (Span<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : Span<byte> * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Span(Of Byte), socketFlags As SocketFlags) As Integer

パラメーター

buffer
Span<Byte>

受信したデータの保存場所となるバイトのスパン。

socketFlags
SocketFlags

送受信の動作を指定する列挙値のビットごとの組み合わせ。

戻り値

Int32

受信されたバイト数。

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。

注釈

このメソッドは Receive 、バッファー パラメーターにデータを読み取り、正常に読み取られたバイト数を返します。 接続指向ソケットとコネクションレス ソケットの両方から呼び出 Receive すことができます。

このオーバーロードでは、受信バッファーを指定するだけで済みます。 バッファー オフセットの既定値は 0、サイズの既定値はバッファー パラメーターの長さ、値の SocketFlags 既定値は None.

接続指向プロトコルを使用している場合は、リモート ホスト接続を確立するために呼び出すか、Accept呼び出すConnectReceive前に着信接続を受け入れる必要があります。 メソッドはReceive、そのメソッドAcceptConnect確立されたリモート ホストから到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、このメソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

読み取り可能なデータがない場合、 Receive タイムアウト値が使用 Socket.ReceiveTimeoutして設定されていない限り、データが使用可能になるまでメソッドはブロックされます。 タイムアウト値を超えると、呼び出し ReceiveSocketException. 非ブロッキング モードで、プロトコル スタック バッファーに使用可能なデータがない場合、メソッドはすぐに完了し、ReceiveSocketException.. このプロパティを Available 使用して、データが読み取り可能かどうかを判断できます。 0 以外の場合 Available は、受信操作を再試行します。

接続指向 Socketを使用している場合、 Receive メソッドはバッファーのサイズまで、使用可能な限り多くのデータを読み取ります。 リモート ホストがメソッドとの接続をSocketシャットダウンし、使用可能なすべてのデータを受信した場合、メソッドはすぐに完了し、Receive0 バイトを返Shutdownします。

コネクションレス Socketを使用している場合は、 Receive メソッドで指定した宛先アドレスからキューに登録された最初のデータグラムが Connect 読み取られます。 受信したデータグラムがパラメーターのサイズより大きい場合は、bufferメッセージのbuffer最初の部分が入力され、余分なデータが失われ、a SocketException がスローされます。

注意

受け取った場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

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

こちらもご覧ください

適用対象

Receive(Byte[], Int32, Int32, SocketFlags)

指定した SocketFlags を使用し、バインドされた Socket から指定したバイト数のデータを受信して、受信バッファー内の指定したオフセット位置に格納します。

public:
 int Receive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * int * int * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags) As Integer

パラメーター

buffer
Byte[]

受信したデータの格納場所である、Byte 型の配列。

offset
Int32

受信データを格納する buffer内の場所。

size
Int32

受信するバイト数。

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。

戻り値

Int32

受信されたバイト数。

例外

buffernullです。

offset が 0 未満です。

または

offsetbuffer の長さを超えています。

または

size が 0 未満です。

  • または -

size が、buffer の長さから offset パラメーターの値を引いた値を超えています。

socketFlags は、値の有効な組み合わせではありません。

  • または -

LocalEndPoint プロパティが設定されていませんでした。

  • または -

Socket にアクセス中にオペレーティング システム エラーが発生しました。

Socket が閉じられました。

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。

次のコード例では、接続 Socketされているデータを受信する前に、データ バッファー、オフセット、サイズ、ソケット フラグを指定します。

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

注釈

このメソッドは Receive 、バッファー パラメーターにデータを読み取り、正常に読み取られたバイト数を返します。 接続指向ソケットとコネクションレス ソケットの両方から呼び出 Receive すことができます。

接続指向プロトコルを使用している場合は、呼び出してリモート ホスト接続を確立するかAccept、呼び出ConnectReceive前に着信接続を受け入れる必要があります。 メソッドはReceive、そのメソッドAcceptConnect確立されたリモート ホストから到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、このメソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

読み取り可能なデータがない場合、 Receive タイムアウト値が使用 Socket.ReceiveTimeoutして設定されていない限り、データが使用可能になるまでメソッドはブロックされます。 タイムアウト値を超えた場合、呼び出し ReceiveSocketException. 非ブロッキング モードで、プロトコル スタック バッファーに使用可能なデータがない場合、メソッドはすぐに完了し、ReceiveSocketException.. ソケットへのアクセスを試行しているときにエラーが発生しました。 下記の注釈を参照してください。 このプロパティを Available 使用して、データが読み取り可能かどうかを判断できます。 0 以外の場合 Available は、受信操作を再試行します。

接続指向 Socketを使用している場合、 Receive このメソッドは、size パラメーターで指定されたバイト数まで、使用可能な量のデータを読み取ります。 リモート ホストがメソッドとの接続をSocketシャットダウンし、使用可能なすべてのデータを受信した場合、メソッドはすぐに完了し、Receive0 バイトを返Shutdownします。

コネクションレス Socketを使用している場合は、 Receive メソッドで指定した宛先アドレスからキューに登録された最初のデータグラムが Connect 読み取られます。 受信したデータグラムがパラメーターのサイズより大きい場合は、bufferメッセージのbuffer最初の部分が入力され、余分なデータが失われ、a SocketException がスローされます。

注意

受け取った場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

注意

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

こちらもご覧ください

適用対象

Receive(Byte[], SocketFlags)

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーに格納します。

public:
 int Receive(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : byte[] * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffer As Byte(), socketFlags As SocketFlags) As Integer

パラメーター

buffer
Byte[]

受信したデータの保存場所となる Byte 型の配列。

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。

戻り値

Int32

受信されたバイト数。

例外

buffernullです。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。

次のコード例では、データ バッファーを指定し SocketFlags 、接続された Socketデータでデータを受信します。

// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
int SendReceiveTest2( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest2

注釈

このメソッドは Receive 、バッファー パラメーターにデータを読み取り、正常に読み取られたバイト数を返します。 接続指向ソケットとコネクションレス ソケットの両方から呼び出 Receive すことができます。

このオーバーロードでは、受信バッファーと必要な値のみを指定する必要があります SocketFlags。 バッファー オフセットの既定値は 0 で、サイズの既定値はバイト パラメーターの長さです。

接続指向プロトコルを使用している場合は、呼び出してリモート ホスト接続を確立するかAccept、呼び出ConnectReceive前に着信接続を受け入れる必要があります。 メソッドはReceive、そのメソッドAcceptConnect確立されたリモート ホストから到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、このメソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

読み取り可能なデータがない場合、データが Receive 使用可能になるまでメソッドはブロックされます。 非ブロッキング モードで、プロトコル スタック バッファーに使用可能なデータがない場合、メソッドはすぐに完了し、ReceiveSocketException.. このプロパティを Available 使用して、データが読み取り可能かどうかを判断できます。 0 以外の場合 Available は、受信操作を再試行してください。

接続指向 Socketを使用している場合、 Receive メソッドはバッファーのサイズまで使用可能な量のデータを読み取ります。 リモート ホストがメソッドとの接続をSocketシャットダウンし、使用可能なすべてのデータを受信した場合、メソッドはすぐに完了し、Receive0 バイトを返Shutdownします。

コネクションレス Socketを使用している場合は、 Receive メソッドで指定した宛先アドレスから、エンキューされた最初のデータグラムが Connect 読み取られます。 受信したデータグラムがパラメーターのサイズより大きい場合は、bufferメッセージのbuffer最初の部分が入力され、余分なデータが失われ、a SocketException がスローされます。

注意

受け取った場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

注意

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

こちらもご覧ください

適用対象

Receive(Span<Byte>)

バインドされた Socket からデータを受信し、受信バッファーに格納します。

public:
 int Receive(Span<System::Byte> buffer);
public int Receive (Span<byte> buffer);
member this.Receive : Span<byte> -> int
Public Function Receive (buffer As Span(Of Byte)) As Integer

パラメーター

buffer
Span<Byte>

受信したデータの保存場所となるバイトのスパン。

戻り値

Int32

受信されたバイト数。

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。

注釈

このメソッドは Receive 、バッファー パラメーターにデータを読み取り、正常に読み取られたバイト数を返します。 接続指向ソケットとコネクションレス ソケットの両方から呼び出 Receive すことができます。

このオーバーロードでは、受信バッファーを指定するだけで済みます。 バッファー オフセットの既定値は 0、サイズの既定値はバッファー パラメーターの長さ、値の SocketFlags 既定値は None.

接続指向プロトコルを使用している場合は、呼び出してリモート ホスト接続を確立するかAccept、呼び出すConnectReceive前に着信接続を受け入れる必要があります。 メソッドはReceive、そのメソッドAcceptConnect確立されたリモート ホストから到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、このメソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

読み取り可能なデータがない場合、 Receive タイムアウト値が使用 Socket.ReceiveTimeoutして設定されていない限り、データが使用可能になるまでメソッドはブロックされます。 タイムアウト値を超えると、呼び出し ReceiveSocketException. 非ブロッキング モードで、プロトコル スタック バッファーに使用可能なデータがない場合、メソッドはすぐに完了し、ReceiveSocketException.. このプロパティを Available 使用して、データが読み取り可能かどうかを判断できます。 0 以外の場合 Available は、受信操作を再試行します。

接続指向 Socketを使用している場合、 Receive メソッドはバッファーのサイズまで、使用可能な限り多くのデータを読み取ります。 リモート ホストがメソッドとの接続をSocketシャットダウンし、使用可能なすべてのデータを受信した場合、メソッドはすぐに完了し、Receive0 バイトを返Shutdownします。

コネクションレス Socketを使用している場合は、 Receive メソッドで指定した宛先アドレスからキューに登録された最初のデータグラムが Connect 読み取られます。 受信したデータグラムがパラメーターのサイズより大きい場合は、bufferメッセージのbuffer最初の部分が入力され、余分なデータが失われ、a SocketException がスローされます。

注意

受け取った場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

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

こちらもご覧ください

適用対象

Receive(IList<ArraySegment<Byte>>)

バインドされた Socket からデータを受信して、受信バッファーのリストに格納します。

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte))) As Integer

パラメーター

buffers
IList<ArraySegment<Byte>>

受信したデータを格納する Byte 型の複数の ArraySegment<T> のリスト。

戻り値

Int32

受信されたバイト数。

例外

buffer パラメーターが null です。

ソケットへのアクセスを試みているときにエラーが発生しました。

Socket が閉じられました。

注釈

このメソッドは、バッファー パラメーターにデータを読み取り、正常に読み取られたバイト数を返します。 接続指向ソケットとコネクションレス ソケットの両方から呼び出すことができます。

このオーバーロードでは、1 つ以上の受信バッファーを指定する必要があります。

接続指向プロトコルを使用している場合は、呼び出してリモート ホスト接続を確立するかAccept、呼び出ConnectReceive前に着信接続を受け入れる必要があります。 メソッドはReceive、そのAcceptメソッドでConnect確立されたリモート ホスト接続から到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、このメソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

読み取り可能なデータがない場合、 Receive タイムアウト値が使用 Socket.ReceiveTimeoutして設定されていない限り、データが使用可能になるまでメソッドはブロックされます。 タイムアウト値を超えた場合、呼び出し ReceiveSocketException. 非ブロッキング モードで、プロトコル スタック バッファーに使用可能なデータがない場合、メソッドはすぐに完了し、ReceiveSocketException.. このプロパティを Available 使用して、データが読み取り可能かどうかを判断できます。 0 以外の場合 Available は、受信操作を再試行します。

接続指向 Socketを使用している場合、 Receive メソッドはバッファーのサイズまで、使用可能な限り多くのデータを読み取ります。 リモート ホストがメソッドとの接続をSocketシャットダウンし、使用可能なすべてのデータを受信した場合、メソッドはすぐに完了し、Receive0 バイトを返Shutdownします。

コネクションレス Socketを使用している場合は、 Receive メソッドで指定した宛先アドレスから、エンキューされた最初のデータグラムが Connect 読み取られます。 受信したデータグラムがパラメーターのサイズより大きい場合は、buffersメッセージのbuffers最初の部分が入力され、余分なデータが失われ、a SocketException がスローされます。

注意

受け取った場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

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

適用対象

Receive(Byte[])

バインドされた Socket からデータを受信し、受信バッファーに格納します。

public:
 int Receive(cli::array <System::Byte> ^ buffer);
public int Receive (byte[] buffer);
member this.Receive : byte[] -> int
Public Function Receive (buffer As Byte()) As Integer

パラメーター

buffer
Byte[]

受信したデータの保存場所となる Byte 型の配列。

戻り値

Int32

受信されたバイト数。

例外

buffernullです。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。

次のコード例では、接続されている Socketデータを受け取ります。

// Displays sending with a connected socket
// using the overload that takes a buffer.
int SendReceiveTest1( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return ( e->ErrorCode );
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        i = server.Receive(bytes);
        Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        i = server.Receive(bytes)
        Console.WriteLine(Encoding.UTF8.GetString(bytes))
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest1

注釈

このメソッドは Receive 、バッファー パラメーターにデータを読み取り、正常に読み取られたバイト数を返します。 接続指向ソケットとコネクションレス ソケットの両方から呼び出 Receive すことができます。

このオーバーロードでは、受信バッファーを指定するだけで済みます。 バッファー オフセットの既定値は 0、サイズの既定値はバッファー パラメーターの長さ、値の SocketFlags 既定値は None.

接続指向プロトコルを使用している場合は、呼び出してリモート ホスト接続を確立するかAccept、呼び出ConnectReceive前に着信接続を受け入れる必要があります。 メソッドはReceive、そのメソッドAcceptConnect確立されたリモート ホストから到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、このメソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

読み取り可能なデータがない場合、 Receive タイムアウト値が使用 Socket.ReceiveTimeoutして設定されていない限り、データが使用可能になるまでメソッドはブロックされます。 タイムアウト値を超えた場合、呼び出し ReceiveSocketException. 非ブロッキング モードで、プロトコル スタック バッファーに使用可能なデータがない場合、メソッドはすぐに完了し、ReceiveSocketException.. このプロパティを Available 使用して、データが読み取り可能かどうかを判断できます。 0 以外の場合 Available は、受信操作を再試行します。

接続指向 Socketを使用している場合、 Receive メソッドはバッファーのサイズまで、使用可能な限り多くのデータを読み取ります。 リモート ホストがメソッドとの接続をSocketシャットダウンし、使用可能なすべてのデータを受信した場合、メソッドはすぐに完了し、Receive0 バイトを返Shutdownします。

コネクションレス Socketを使用している場合は、 Receive メソッドで指定した宛先アドレスからキューに登録された最初のデータグラムが Connect 読み取られます。 受信したデータグラムがパラメーターのサイズより大きい場合は、bufferメッセージのbuffer最初の部分が入力され、余分なデータが失われ、a SocketException がスローされます。

注意

受け取った場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

注意

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

こちらもご覧ください

適用対象

Receive(IList<ArraySegment<Byte>>, SocketFlags)

重要

この API は CLS 準拠ではありません。

CLS 準拠の代替
System.Net.Sockets.Socket.Receive(Byte[], SocketFlags)

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーのリストに格納します。

public:
 int Receive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
[System.CLSCompliant(false)]
public int Receive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int
[<System.CLSCompliant(false)>]
member this.Receive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int
Public Function Receive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Integer

パラメーター

buffers
IList<ArraySegment<Byte>>

受信したデータを格納する Byte 型の複数の ArraySegment<T> のリスト。

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。

戻り値

Int32

受信されたバイト数。

属性

例外

buffersnullです。

  • または -

buffers.Count が 0 です。

ソケットへのアクセスを試みているときにエラーが発生しました。

Socket が閉じられました。

次のコード例は、接続されている Socketデータを受信する方法を示しています。


// Build the buffers for the receive.
List<ArraySegment<Byte> >^ receiveBuffers = 
    gcnew List<ArraySegment<Byte> >(2);

array<Byte>^ bigBuffer = gcnew array<Byte>(1024);

// Specify the first buffer segment (2 bytes, starting 
// at the 4th element of bigBuffer)
receiveBuffers->Add(ArraySegment<Byte>(bigBuffer, 4, 2));

// Specify the second buffer segment (500 bytes, starting
// at the 20th element of bigBuffer)
receiveBuffers->Add(
    ArraySegment<Byte>(bigBuffer, 20, 500));

tcpSocket->Receive(receiveBuffers);

Console::WriteLine("{0}", 
    asciiEncoding->GetString(bigBuffer));

// Build the buffers for the receive.
List<ArraySegment<byte>> recvBuffers =
                         new List<ArraySegment<byte>>(2);

byte[] bigBuffer = new byte[1024];

// Specify the first buffer segment (2 bytes, starting
// at the 4th element of bigBuffer)
recvBuffers.Add(new ArraySegment<byte>
                        (bigBuffer, 4, 2));

// Specify the second buffer segment (500 bytes, starting
// at the 20th element of bigBuffer)
recvBuffers.Add(new ArraySegment<byte>
                        (bigBuffer, 20, 500));

int bytesReceived = mySocket.Receive(recvBuffers);

Console.WriteLine("{0}", ASCII.GetString(bigBuffer));

注釈

このメソッドは、パラメーターにデータを buffers 読み取り、正常に読み取られたバイト数を返します。 接続指向ソケットとコネクションレス ソケットの両方から呼び出すことができます。

このオーバーロードでは、1 つ以上の受信バッファーを指定する必要があります。 この値の既定値NoneSocketFlags .

接続指向プロトコルを使用している場合は、呼び出してリモート ホスト接続を確立するかAccept、呼び出ConnectReceive前に着信接続を受け入れる必要があります。 メソッドはReceive、そのAcceptメソッドでConnect確立されたリモート ホスト接続から到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、このメソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

読み取り可能なデータがない場合、 Receive タイムアウト値が使用 Socket.ReceiveTimeoutして設定されていない限り、データが使用可能になるまでメソッドはブロックされます。 タイムアウト値を超えた場合、呼び出しReceiveSocketExceptionは .. 非ブロッキング モードで、プロトコル スタック バッファーに使用可能なデータがない場合、メソッドはすぐに完了し、ReceiveSocketException.. このプロパティを Available 使用して、データが読み取り可能かどうかを判断できます。 0 以外の場合 Available は、受信操作を再試行します。

接続指向 Socketを使用している場合、 Receive メソッドはバッファーのサイズまで、使用可能な限り多くのデータを読み取ります。 リモート ホストがメソッドとの接続をSocketシャットダウンし、使用可能なすべてのデータを受信した場合、メソッドはすぐに完了し、Receive0 バイトを返Shutdownします。

コネクションレス Socketを使用している場合は、 Receive メソッドで指定した宛先アドレスから、エンキューされた最初のデータグラムが Connect 読み取られます。 受信したデータグラムがパラメーターのサイズより大きい場合は、buffersメッセージのbuffers最初の部分が入力され、余分なデータが失われ、a SocketException がスローされます。

注意

受け取った場合は SocketException、プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得した後、エラーの詳細な説明については、Windows Sockets バージョン 2 API エラー コードのドキュメントを参照してください。

注意

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

こちらもご覧ください

適用対象