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)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した 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 オブジェクト。

戻り値

受信されたバイト数。

例外

buffernullです。

offset が 0 未満です。

または

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

または

size が 0 未満です。

- または -

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

Socket が閉じられました。

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

注釈

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

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

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

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

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

Note

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

こちらもご覧ください

適用対象

Receive(Span<Byte>, SocketFlags, SocketError)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した 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 つを格納します。

戻り値

受信されたバイト数。

例外

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

Socket が閉じられました。

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

注釈

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

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

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

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

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

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

注意

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

Note

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

こちらもご覧ください

適用対象

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

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した 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);
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 オブジェクト。

戻り値

受信されたバイト数。

例外

buffersnull です。

- または -

buffers.Count が 0 です。

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

Socket が閉じられました。

注釈

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

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

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

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

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

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

注意

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

Note

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

こちらもご覧ください

適用対象

Receive(Byte[], Int32, SocketFlags)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した 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 値のビットごとの組み合わせ。

戻り値

受信されたバイト数。

例外

buffernullです。

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

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

Socket が閉じられました。

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

以下は、 に見つかったデータをbuffer受け取り、 に をSocketFlags指定しますNone

// 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、 メソッドまたは Accept メソッドでConnect確立されたリモート ホストから到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、 メソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

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

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

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

注意

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

Note

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

こちらもご覧ください

適用対象

Receive(Span<Byte>, SocketFlags)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した 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

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

戻り値

受信されたバイト数。

例外

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

Socket が閉じられました。

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

注釈

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

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

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

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

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

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

注意

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

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

こちらもご覧ください

適用対象

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

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した 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 値のビットごとの組み合わせ。

戻り値

受信されたバイト数。

例外

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、 メソッドまたは Accept メソッドでConnect確立されたリモート ホストから到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、 メソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

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

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

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

注意

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

Note

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

こちらもご覧ください

適用対象

Receive(Byte[], SocketFlags)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した 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 値のビットごとの組み合わせ。

戻り値

受信されたバイト数。

例外

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、 メソッドまたは Accept メソッドでConnect確立されたリモート ホストから到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、 メソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

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

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

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

注意

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

Note

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

こちらもご覧ください

適用対象

Receive(Span<Byte>)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

バインドされた 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>

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

戻り値

受信されたバイト数。

例外

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

Socket が閉じられました。

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

注釈

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

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

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

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

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

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

注意

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

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

こちらもご覧ください

適用対象

Receive(IList<ArraySegment<Byte>>)

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

バインドされた 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> のリスト。

戻り値

受信されたバイト数。

例外

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

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

Socket が閉じられました。

注釈

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

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

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

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

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

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

注意

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

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

適用対象

Receive(Byte[])

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

バインドされた 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 型の配列。

戻り値

受信されたバイト数。

例外

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、 メソッドまたは Accept メソッドでConnect確立されたリモート ホストから到着したデータのみを読み取ります。 コネクションレス プロトコルを使用している場合は、 メソッドを ReceiveFrom 使用することもできます。 ReceiveFrom では、任意のホストから到着するデータを受信できます。

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

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

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

注意

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

Note

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

こちらもご覧ください

適用対象

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

ソース:
Socket.cs
ソース:
Socket.cs
ソース:
Socket.cs

指定した 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);
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 値のビットごとの組み合わせ。

戻り値

受信されたバイト数。

例外

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 つ以上の受信バッファーを指定する必要があります。 値の既定値は SocketFlags です None

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

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

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

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

注意

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

Note

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

こちらもご覧ください

適用対象