Socket.Receive メソッド (Byte[], Int32, SocketFlags)
アセンブリ: System (system.dll 内)

Public Function Receive ( _ buffer As Byte(), _ size As Integer, _ socketFlags As SocketFlags _ ) As Integer
Dim instance As Socket Dim buffer As Byte() Dim size As Integer Dim socketFlags As SocketFlags Dim returnValue As Integer returnValue = instance.Receive(buffer, size, socketFlags)
戻り値
受信したバイト数。


Receive メソッドは、データを buffer パラメータに読み込み、正常に読み込まれたバイト数を返します。コネクション指向のソケットおよびコネクションレスのソケットの両方から Receive を呼び出すことができます。
このオーバーロードには、受信バッファ、受信するバイト数、および必要な SocketFlags だけが必要です。
コネクション指向のプロトコルを使用している場合は、Connect を呼び出してリモート ホストとの接続を確立するか、Receive を呼び出す前に Accept を呼び出して受信接続を受け入れる必要があります。Receive メソッドは、Connect メソッドまたは Accept メソッドで確立されたリモート ホストから送信されたデータだけを読み取ります。コネクションレスのプロトコルを使用している場合は、ReceiveFrom メソッドも使用できます。ReceiveFrom を使用すると、どのホストから送信されたデータでも受信できます。
読み取ることができるデータが存在しない場合、Socket.ReceiveTimeout を使用してタイムアウト値が設定されていなければ、Receive メソッドは読み取ることができるデータが出現するまでブロックします。タイムアウト値を超えた場合、Receive 呼び出しで SocketException がスローされます。非ブロッキング モードにあり、プロトコル スタック バッファに使用できるデータがない場合、Receive メソッドはすぐに終了し、SocketException をスローします。Available プロパティを使用すると、読み取ることができるデータがあるかどうかを確認できます。Available が 0 以外の場合は、受信操作を再試行してください。
コネクション指向の Socket を使用している場合、Receive メソッドは、size パラメータで指定したバイト数までの、使用可能なデータをすべて読み取ります。リモート ホストが Shutdown メソッドで Socket 接続をシャットダウンし、使用できるデータがすべて受信されると、Receive メソッドはすぐに完了して、0 バイトを返します。
コネクションレスの Socket を使用している場合、Receive は、Connect メソッドで指定した接続先のアドレスから、最初にキューに格納されたデータグラムを読み取ります。受信するデータグラムのサイズが buffer パラメータのサイズより大きい場合、buffer にはメッセージの最初の部分が格納されますが、超過するデータは失われ、SocketException がスローされます。
![]() |
---|
SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。 |

見つかったデータを buffer に受信し、SocketFlags に None を指定する例を次に示します。
' 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 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. 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 = (Int32)s.Receive((ubyte[])recvBytes, recvBytes.get_Length(), (SocketFlags)0); strRetPage = "Default HTML page on " + server + ":\r\n"; strRetPage = strRetPage + ascii.GetString((ubyte[])recvBytes, 0, Convert.ToInt32(bytes)); while (Convert.ToInt32(bytes) > 0) { bytes = (Int32)s.Receive((ubyte[])recvBytes, recvBytes.get_Length(), (SocketFlags)0); strRetPage = strRetPage + ascii.GetString((ubyte[])recvBytes, 0, Convert.ToInt32(bytes)); }


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Receive メソッド (Byte[])
アセンブリ: System (system.dll 内)

Dim instance As Socket Dim buffer As Byte() Dim returnValue As Integer returnValue = instance.Receive(buffer)
戻り値
受信したバイト数。


Receive メソッドは、データをバッファ パラメータに読み込み、正常に読み込まれたバイト数を返します。コネクション指向のソケットおよびコネクションレスのソケットの両方から Receive を呼び出すことができます。
このオーバーロードには受信バッファだけが必要です。バッファのオフセットの既定値は 0、サイズの既定値はバッファ パラメータの長さであり、SocketFlags の既定値は None です。
コネクション指向のプロトコルを使用している場合は、Connect を呼び出してリモート ホストとの接続を確立するか、Receive を呼び出す前に Accept を呼び出して受信接続を受け入れる必要があります。Receive メソッドは、Connect メソッドまたは Accept メソッドで確立されたリモート ホストから送信されたデータだけを読み取ります。コネクションレスのプロトコルを使用している場合は、ReceiveFrom メソッドも使用できます。ReceiveFrom を使用すると、どのホストから送信されたデータでも受信できます。
読み取ることができるデータが存在しない場合、Socket.ReceiveTimeout を使用してタイムアウト値が設定されていなければ、Receive メソッドは読み取ることができるデータが出現するまでブロックします。タイムアウト値を超えた場合、Receive 呼び出しで SocketException がスローされます。非ブロッキング モードにあり、プロトコル スタック バッファに使用できるデータがない場合、Receive メソッドはすぐに終了し、SocketException をスローします。Available プロパティを使用すると、読み取ることができるデータがあるかどうかを確認できます。Available が 0 以外の場合は、受信操作を再試行してください。
コネクション指向の Socket を使用している場合、Receive メソッドは、バッファ サイズまでの使用可能なデータをすべて読み取ります。リモート ホストが Shutdown メソッドで Socket 接続をシャットダウンし、使用できるデータがすべて受信されると、Receive メソッドはすぐに完了して、0 バイトを返します。
コネクションレスの Socket を使用している場合、Receive は、Connect メソッドで指定した接続先のアドレスから、最初にキューに格納されたデータグラムを読み取ります。受信するデータグラムのサイズが buffer パラメータのサイズより大きい場合、buffer にはメッセージの最初の部分が格納されますが、超過するデータは失われ、SocketException がスローされます。
![]() |
---|
SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。 |

接続された Socket でデータを受信するコード例を次に示します。
' 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
// 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. 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) { ubyte msg[] = Encoding.get_UTF8().GetBytes("This is a test"); ubyte bytes[] = new ubyte[256]; try { // Blocks until send returns. int i = server.Send(msg); Console.WriteLine("Sent {0} bytes.", (Int32)i); // Get reply from the server. i = server.Receive(bytes); Console.WriteLine(Encoding.get_UTF8().GetString(bytes)); } catch (SocketException e) { Console.WriteLine("{0} Error code: {1}.", e.get_Message(), (Int32)(e.get_ErrorCode())); return e.get_ErrorCode(); } return 0; } //SendReceiveTest1


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Receive メソッド (ジェネリック IList, SocketFlags)
アセンブリ: System (system.dll 内)

<CLSCompliantAttribute(False)> _ Public Function Receive ( _ buffers As IList(Of ArraySegment(Of Byte)), _ socketFlags As SocketFlags _ ) As Integer
Dim instance As Socket Dim buffers As IList(Of ArraySegment(Of Byte)) Dim socketFlags As SocketFlags Dim returnValue As Integer returnValue = instance.Receive(buffers, socketFlags)
[CLSCompliantAttribute(false)] public int Receive ( IList<ArraySegment<byte>> buffers, SocketFlags socketFlags )
[CLSCompliantAttribute(false)] public: int Receive ( IList<ArraySegment<unsigned char>>^ buffers, SocketFlags socketFlags )
/** @attribute CLSCompliantAttribute(false) */ public int Receive ( IList<ArraySegment<byte>> buffers, SocketFlags socketFlags )
CLSCompliantAttribute(false) public function Receive ( buffers : IList<ArraySegment<byte>>, socketFlags : SocketFlags ) : int
戻り値
受信したバイト数。


このメソッドは、データを buffers パラメータに読み込み、正常に読み込まれたバイト数を返します。コネクション指向のソケットおよびコネクションレスのソケットの両方から呼び出すことができます。
このオーバーロードには、1 つ以上の受信バッファが必要です。SocketFlags の既定値は None です。
コネクション指向のプロトコルを使用している場合は、Connect を呼び出してリモート ホストとの接続を確立するか、Receive を呼び出す前に Accept を呼び出して受信接続を受け入れる必要があります。Receive メソッドは、Connect メソッドまたは Accept メソッドで確立されたリモート ホスト接続から送信されたデータだけを読み取ります。コネクションレスのプロトコルを使用している場合は、ReceiveFrom メソッドも使用できます。ReceiveFrom を使用すると、どのホストから送信されたデータでも受信できます。
読み取ることができるデータが存在しない場合、Socket.ReceiveTimeout を使用してタイムアウト値が設定されていなければ、Receive メソッドは読み取ることができるデータが出現するまでブロックします。タイムアウト値を超えた場合、Receive 呼び出しで SocketException がスローされます。非ブロッキング モードにあり、プロトコル スタック バッファに使用できるデータがない場合、Receive メソッドはすぐに終了し、SocketException をスローします。Available プロパティを使用すると、読み取ることができるデータがあるかどうかを確認できます。Available が 0 以外の場合は、受信操作を再試行してください。
コネクション指向の Socket を使用している場合、Receive メソッドは、バッファ サイズまでの使用可能なデータをすべて読み取ります。リモート ホストが Shutdown メソッドで Socket 接続をシャットダウンし、使用できるデータがすべて受信されると、Receive メソッドはすぐに完了して、0 バイトを返します。
コネクションレスの Socket を使用している場合、Receive は、Connect メソッドで指定した接続先のアドレスから、最初にキューに格納されたデータグラムを読み取ります。受信するデータグラムのサイズが buffers パラメータのサイズより大きい場合、buffers にはメッセージの最初の部分が格納されますが、超過するデータは失われ、SocketException がスローされます。
![]() |
---|
SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。 |

接続された Socket でデータを受信する方法を次のコード例に示します。
// 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));
// 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));


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Receive メソッド (ジェネリック IList)
アセンブリ: System (system.dll 内)

Dim instance As Socket Dim buffers As IList(Of ArraySegment(Of Byte)) Dim returnValue As Integer returnValue = instance.Receive(buffers)
戻り値
受信したバイト数。


このメソッドは、データを buffers パラメータに読み込み、正常に読み込まれたバイト数を返します。コネクション指向のソケットおよびコネクションレスのソケットの両方から呼び出すことができます。
このオーバーロードには、1 つ以上の受信バッファが必要です。
コネクション指向のプロトコルを使用している場合は、Connect を呼び出してリモート ホストとの接続を確立するか、Receive を呼び出す前に Accept を呼び出して受信接続を受け入れる必要があります。Receive メソッドは、Connect メソッドまたは Accept メソッドで確立されたリモート ホスト接続から送信されたデータだけを読み取ります。コネクションレスのプロトコルを使用している場合は、ReceiveFrom メソッドも使用できます。ReceiveFrom を使用すると、どのホストから送信されたデータでも受信できます。
読み取ることができるデータが存在しない場合、Socket.ReceiveTimeout を使用してタイムアウト値が設定されていなければ、Receive メソッドは読み取ることができるデータが出現するまでブロックします。タイムアウト値を超えた場合、Receive 呼び出しで SocketException がスローされます。非ブロッキング モードにあり、プロトコル スタック バッファに使用できるデータがない場合、Receive メソッドはすぐに終了し、SocketException をスローします。Available プロパティを使用すると、読み取ることができるデータがあるかどうかを確認できます。Available が 0 以外の場合は、受信操作を再試行してください。
コネクション指向の Socket を使用している場合、Receive メソッドは、バッファ サイズまでの使用可能なデータをすべて読み取ります。リモート ホストが Shutdown メソッドで Socket 接続をシャットダウンし、使用できるデータがすべて受信されると、Receive メソッドはすぐに完了して、0 バイトを返します。
コネクションレスの Socket を使用している場合、Receive は、Connect メソッドで指定した接続先のアドレスから、最初にキューに格納されたデータグラムを読み取ります。受信するデータグラムのサイズが buffers パラメータのサイズより大きい場合、buffers にはメッセージの最初の部分が格納されますが、超過するデータは失われ、SocketException がスローされます。
![]() |
---|
SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのマニュアルからエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。 |
メモ : このメンバは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。詳細については、「ネットワークのトレース」を参照してください。

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Receive メソッド (Byte[], SocketFlags)
アセンブリ: System (system.dll 内)

Dim instance As Socket Dim buffer As Byte() Dim socketFlags As SocketFlags Dim returnValue As Integer returnValue = instance.Receive(buffer, socketFlags)
戻り値
受信したバイト数。


Receive メソッドは、データをバッファ パラメータに読み込み、正常に読み込まれたバイト数を返します。コネクション指向のソケットおよびコネクションレスのソケットの両方から Receive を呼び出すことができます。
このオーバーロードには、受信バッファと必要な SocketFlags だけが必要です。バッファのオフセットの既定値は 0 であり、サイズの既定値はバイト パラメータの長さです。
コネクション指向のプロトコルを使用している場合は、Connect を呼び出してリモート ホストとの接続を確立するか、Receive を呼び出す前に Accept を呼び出して受信接続を受け入れる必要があります。Receive メソッドは、Connect メソッドまたは Accept メソッドで確立されたリモート ホストから送信されたデータだけを読み取ります。コネクションレスのプロトコルを使用している場合は、ReceiveFrom メソッドも使用できます。ReceiveFrom を使用すると、どのホストから送信されたデータでも受信できます。
読み取ることができるデータが存在しない場合、Receive メソッドは読み取ることができるデータが出現するまでブロックします。非ブロッキング モードにあり、プロトコル スタック バッファに使用できるデータがない場合、Receive メソッドはすぐに終了し、SocketException をスローします。Available プロパティを使用すると、読み取ることができるデータがあるかどうかを確認できます。Available が 0 以外の場合は、受信操作を再試行してください。
コネクション指向の Socket を使用している場合、Receive メソッドは、バッファ サイズまでの使用可能なデータをすべて読み取ります。リモート ホストが Shutdown メソッドで Socket 接続をシャットダウンし、使用できるデータがすべて受信されると、Receive メソッドはすぐに完了して、0 バイトを返します。
コネクションレスの Socket を使用している場合、Receive は、Connect メソッドで指定した接続先のアドレスから、最初にキューに格納されたデータグラムを読み取ります。受信するデータグラムのサイズが buffer パラメータのサイズより大きい場合、buffer にはメッセージの最初の部分が格納されますが、超過するデータは失われ、SocketException がスローされます。
![]() |
---|
SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。 |

データ バッファおよび接続された Socket の受信データの SocketFlags を指定するコード例を次に示します。
' 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
// 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. 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) { ubyte msg[] = Encoding.get_UTF8().GetBytes("This is a test"); ubyte bytes[] = new ubyte[256]; try { // Blocks until send returns. int i = server.Send(msg, SocketFlags.None); Console.WriteLine("Sent {0} bytes.", (Int32)i); // Get reply from the server. i = server.Receive(bytes, SocketFlags.None); Console.WriteLine(Encoding.get_UTF8().GetString(bytes)); } catch (SocketException e) { Console.WriteLine("{0} Error code: {1}.", e.get_Message(), (Int32)e.get_ErrorCode()); return e.get_ErrorCode(); } return 0; } //SendReceiveTest2


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Receive メソッド (ジェネリック IList, SocketFlags, SocketError)
アセンブリ: System (system.dll 内)

<CLSCompliantAttribute(False)> _ Public Function Receive ( _ buffers As IList(Of ArraySegment(Of Byte)), _ socketFlags As SocketFlags, _ <OutAttribute> ByRef errorCode As SocketError _ ) As Integer
Dim instance As Socket Dim buffers As IList(Of ArraySegment(Of Byte)) Dim socketFlags As SocketFlags Dim errorCode As SocketError Dim returnValue As Integer returnValue = instance.Receive(buffers, socketFlags, errorCode)
[CLSCompliantAttribute(false)] public int Receive ( IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out SocketError errorCode )
[CLSCompliantAttribute(false)] public: int Receive ( IList<ArraySegment<unsigned char>>^ buffers, SocketFlags socketFlags, [OutAttribute] SocketError% errorCode )
/** @attribute CLSCompliantAttribute(false) */ public int Receive ( IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, /** @attribute OutAttribute() */ /** @ref */ SocketError errorCode )
戻り値
受信したバイト数。


このメソッドは、データを buffers パラメータに読み込み、正常に読み込まれたバイト数を返します。コネクション指向のソケットおよびコネクションレスのソケットの両方から呼び出すことができます。
このオーバーロードには、1 つ以上の受信バッファが必要です。SocketFlags の既定値は None です。
コネクション指向のプロトコルを使用している場合は、Connect を呼び出してリモート ホストとの接続を確立するか、Receive を呼び出す前に Accept を呼び出して受信接続を受け入れる必要があります。Receive メソッドは、Connect メソッドまたは Accept メソッドで確立されたリモート ホスト接続から送信されたデータだけを読み取ります。コネクションレスのプロトコルを使用している場合は、ReceiveFrom メソッドも使用できます。ReceiveFrom を使用すると、どのホストから送信されたデータでも受信できます。
読み取ることができるデータが存在しない場合、Socket.ReceiveTimeout を使用してタイムアウト値が設定されていなければ、Receive メソッドは読み取ることができるデータが出現するまでブロックします。タイムアウト値を超えた場合、Receive 呼び出しで SocketException がスローされます。非ブロッキング モードにあり、プロトコル スタック バッファに使用できるデータがない場合、Receive メソッドはすぐに終了し、SocketException をスローします。Available プロパティを使用すると、読み取ることができるデータがあるかどうかを確認できます。Available が 0 以外の場合は、受信操作を再試行してください。
コネクション指向の Socket を使用している場合、Receive メソッドは、バッファ サイズまでの使用可能なデータをすべて読み取ります。リモート ホストが Shutdown メソッドで Socket 接続をシャットダウンし、使用できるデータがすべて受信されると、Receive メソッドはすぐに完了して、0 バイトを返します。
コネクションレスの Socket を使用している場合、Receive は、Connect メソッドで指定した接続先のアドレスから、最初にキューに格納されたデータグラムを読み取ります。受信するデータグラムのサイズが buffers パラメータのサイズより大きい場合、buffers にはメッセージの最初の部分が格納されますが、超過するデータは失われ、SocketException がスローされます。
![]() |
---|
SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。 |


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Receive メソッド (Byte[], Int32, Int32, SocketFlags, SocketError)
アセンブリ: System (system.dll 内)

Public Function Receive ( _ buffer As Byte(), _ offset As Integer, _ size As Integer, _ socketFlags As SocketFlags, _ <OutAttribute> ByRef errorCode As SocketError _ ) As Integer
Dim instance As Socket Dim buffer As Byte() Dim offset As Integer Dim size As Integer Dim socketFlags As SocketFlags Dim errorCode As SocketError Dim returnValue As Integer returnValue = instance.Receive(buffer, offset, size, socketFlags, errorCode)
public int Receive ( byte[] buffer, int offset, int size, SocketFlags socketFlags, out SocketError errorCode )
public: int Receive ( array<unsigned char>^ buffer, int offset, int size, SocketFlags socketFlags, [OutAttribute] SocketError% errorCode )
public int Receive ( byte[] buffer, int offset, int size, SocketFlags socketFlags, /** @attribute OutAttribute() */ /** @ref */ SocketError errorCode )
戻り値
受信したバイト数。


Receive メソッドは、データをバッファ パラメータに読み込み、正常に読み込まれたバイト数を返します。コネクション指向のソケットおよびコネクションレスのソケットの両方から Receive を呼び出すことができます。
コネクション指向のプロトコルを使用している場合は、Connect を呼び出してリモート ホストとの接続を確立するか、Receive を呼び出す前に Accept を呼び出して受信接続を受け入れる必要があります。Receive メソッドは、Connect メソッドまたは Accept メソッドで確立されたリモート ホストから送信されたデータだけを読み取ります。コネクションレスのプロトコルを使用している場合は、ReceiveFrom メソッドも使用できます。ReceiveFrom を使用すると、どのホストから送信されたデータでも受信できます。
読み取ることができるデータが存在しない場合、Socket.ReceiveTimeout を使用してタイムアウト値が設定されていなければ、Receive メソッドは読み取ることができるデータが出現するまでブロックします。タイムアウト値を超えた場合、Receive 呼び出しで SocketException がスローされます。非ブロッキング モードにあり、プロトコル スタック バッファに使用できるデータがない場合、Receive メソッドはすぐに終了し、SocketException をスローします。ソケットへのアクセスを試みているときにエラーが発生しました。以下の解説を参照してください。Available プロパティを使用すると、読み取ることができるデータがあるかどうかを確認できます。Available が 0 以外の場合は、受信操作を再試行してください。
コネクション指向の Socket を使用している場合、Receive メソッドは、サイズ パラメータで指定したバイト数までの、使用可能なデータをすべて読み取ります。リモート ホストが Shutdown メソッドで Socket 接続をシャットダウンし、使用できるデータがすべて受信されると、Receive メソッドはすぐに完了して、0 バイトを返します。
コネクションレスの Socket を使用している場合、Receive は、Connect メソッドで指定した接続先のアドレスから、最初にキューに格納されたデータグラムを読み取ります。受信するデータグラムのサイズが buffer パラメータのサイズより大きい場合、buffer にはメッセージの最初の部分が格納されますが、超過するデータは失われ、SocketException がスローされます。
![]() |
---|
SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。 |


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Socket.Receive メソッド

名前 | 説明 |
---|---|
Socket.Receive (Byte[]) | バインドされた Socket からデータを受信し、受信バッファに格納します。 .NET Compact Framework によってサポートされています。 |
Socket.Receive (ジェネリック IList) | バインドされた Socket からデータを受信して、受信バッファのリストに格納します。 |
Socket.Receive (Byte[], SocketFlags) | 指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファに格納します。 .NET Compact Framework によってサポートされています。 |
Socket.Receive (ジェネリック IList, SocketFlags) | 指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファのリストに格納します。 |
Socket.Receive (Byte[], Int32, SocketFlags) | 指定した SocketFlags を使用し、バインドされた Socket から指定したバイト数のデータを受信して受信バッファに格納します。 .NET Compact Framework によってサポートされています。 |
Socket.Receive (ジェネリック IList, SocketFlags, SocketError) | 指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファのリストに格納します。 |
Socket.Receive (Byte[], Int32, Int32, SocketFlags) | 指定した SocketFlags を使用し、バインドされた Socket から指定したバイト数のデータを受信して、受信バッファ内の指定したオフセット位置に格納します。 .NET Compact Framework によってサポートされています。 |
Socket.Receive (Byte[], Int32, Int32, SocketFlags, SocketError) | 指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファに格納します。 |

Socket.Receive メソッド (Byte[], Int32, Int32, SocketFlags)
アセンブリ: System (system.dll 内)

Public Function Receive ( _ buffer As Byte(), _ offset As Integer, _ size As Integer, _ socketFlags As SocketFlags _ ) As Integer
Dim instance As Socket Dim buffer As Byte() Dim offset As Integer Dim size As Integer Dim socketFlags As SocketFlags Dim returnValue As Integer returnValue = instance.Receive(buffer, offset, size, socketFlags)
public function Receive ( buffer : byte[], offset : int, size : int, socketFlags : SocketFlags ) : int
戻り値
受信したバイト数。


Receive メソッドは、データをバッファ パラメータに読み込み、正常に読み込まれたバイト数を返します。コネクション指向のソケットおよびコネクションレスのソケットの両方から Receive を呼び出すことができます。
コネクション指向のプロトコルを使用している場合は、Connect を呼び出してリモート ホストとの接続を確立するか、Receive を呼び出す前に Accept を呼び出して受信接続を受け入れる必要があります。Receive メソッドは、Connect メソッドまたは Accept メソッドで確立されたリモート ホストから送信されたデータだけを読み取ります。コネクションレスのプロトコルを使用している場合は、ReceiveFrom メソッドも使用できます。ReceiveFrom を使用すると、どのホストから送信されたデータでも受信できます。
読み取ることができるデータが存在しない場合、Socket.ReceiveTimeout を使用してタイムアウト値が設定されていなければ、Receive メソッドは読み取ることができるデータが出現するまでブロックします。タイムアウト値を超えた場合、Receive 呼び出しで SocketException がスローされます。非ブロッキング モードにあり、プロトコル スタック バッファに使用できるデータがない場合、Receive メソッドはすぐに終了し、SocketException をスローします。ソケットへのアクセスを試みているときにエラーが発生しました。以下の解説を参照してください。Available プロパティを使用すると、読み取ることができるデータがあるかどうかを確認できます。Available が 0 以外の場合は、受信操作を再試行してください。
コネクション指向の Socket を使用している場合、Receive メソッドは、サイズ パラメータで指定したバイト数までの、使用可能なデータをすべて読み取ります。リモート ホストが Shutdown メソッドで Socket 接続をシャットダウンし、使用できるデータがすべて受信されると、Receive メソッドはすぐに完了して、0 バイトを返します。
コネクションレスの Socket を使用している場合、Receive は、Connect メソッドで指定した接続先のアドレスから、最初にキューに格納されたデータグラムを読み取ります。受信するデータグラムのサイズが buffer パラメータのサイズより大きい場合、buffer にはメッセージの最初の部分が格納されますが、超過するデータは失われ、SocketException がスローされます。
![]() |
---|
SocketException が発生した場合は、SocketException.ErrorCode プロパティを使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのドキュメントでエラーの詳細情報を確認してください。これは MSDN ライブラリから入手できます。 |

接続された Socket でデータを受信する前に、データ バッファ、オフセット、サイズ、およびソケット フラグを指定するコード例を次に示します。
' 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
// 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, 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); return (e.ErrorCode); } return 0; }
// 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) { ubyte msg[] = Encoding.get_UTF8().GetBytes("This is a test"); ubyte bytes[] = new ubyte[256]; try { // Blocks until send returns. int i = server.Send(msg, 0, msg.get_Length(), SocketFlags.None); Console.WriteLine("Sent {0} bytes.", (Int32)i); // Get reply from the server. server.Receive(bytes, 0, server.get_Available(), SocketFlags.None); Console.WriteLine(Encoding.get_UTF8().GetString(bytes)); } catch (SocketException e) { Console.WriteLine("{0} Error code: {1}.", e.get_Message(), (Int32)e.get_ErrorCode()); return e.get_ErrorCode(); } return 0; } //SendReceiveTest4


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- Socket.Receiveのページへのリンク