Socket.Receiveとは? わかりやすく解説

Socket.Receive メソッド (Byte[], Int32, SocketFlags)

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

名前空間: System.Net.Sockets
アセンブリ: 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)
public int Receive (
    byte[] buffer,
    int size,
    SocketFlags socketFlags
)
public:
int Receive (
    array<unsigned char>^ buffer, 
    int size, 
    SocketFlags socketFlags
)
public int Receive (
    byte[] buffer, 
    int size, 
    SocketFlags socketFlags
)
public function Receive (
    buffer : byte[], 
    size : int, 
    socketFlags : SocketFlags
) : int

パラメータ

buffer

受信したデータストレージ場所となる Byte 型の配列

size

受信するバイト数。

socketFlags

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

戻り値
受信したバイト数。

例外例外
例外種類条件

ArgumentNullException

buffernull 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

sizebufferサイズ超えてます。

SocketException

ソケットへのアクセス試みているときにエラー発生しました詳細については「解説」を参照してください

ObjectDisposedException

Socket閉じられています。

SecurityException

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

解説解説

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));
}
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.Receive メソッド (Byte[])

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

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

例外例外
例外種類条件

ArgumentNullException

buffernull 参照 (Visual Basic では Nothing) です。

SocketException

ソケットへのアクセス試みているときにエラー発生しました詳細については「解説」を参照してください

ObjectDisposedException

Socket閉じられています。

SecurityException

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

解説解説

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
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.Receive メソッド (ジェネリック IList, SocketFlags)

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

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

このメソッドは、CLS準拠していません。  CLS準拠する代替必要な場合は、Receive(Byte[],SocketFlags) を使用してください

名前空間: System.Net.Sockets
アセンブリ: 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

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

socketFlags

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

戻り値
受信したバイト数。

例外例外
例外種類条件

ArgumentNullException

buffersnull 参照 (Visual Basic では Nothing) です。

または

buffers.Count が 0 です。

SocketException

ソケットへのアクセス試みているときにエラー発生しました詳細については「解説」を参照してください

ObjectDisposedException

Socket閉じられています。

解説解説

このメソッドは、データ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));
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.Receive メソッド (ジェネリック IList)

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

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

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function Receive ( _
    buffers As IList(Of ArraySegment(Of
 Byte)) _
) As Integer
Dim instance As Socket
Dim buffers As IList(Of
 ArraySegment(Of Byte))
Dim returnValue As Integer

returnValue = instance.Receive(buffers)
public int Receive (
    IList<ArraySegment<byte>> buffers
)
public:
int Receive (
    IList<ArraySegment<unsigned char>>^ buffers
)
public int Receive (
    IList<ArraySegment<byte>> buffers
)
public function Receive (
    buffers : IList<ArraySegment<byte>>
) : int

パラメータ

buffers

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

戻り値
受信したバイト数。

例外例外
例外種類条件

ArgumentNullException

buffer パラメータnull 参照 (Visual Basic では Nothing) です。

SocketException

ソケットへのアクセス試みているときにエラー発生しました詳細については「解説」を参照してください

ObjectDisposedException

Socket閉じられています。

解説解説

このメソッドは、データを 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 ライブラリから入手できます

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

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.Receive メソッド (Byte[], SocketFlags)

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

名前空間: System.Net.Sockets
アセンブリ: System (system.dll 内)
構文構文

Public Function Receive ( _
    buffer As Byte(), _
    socketFlags As SocketFlags _
) As Integer
Dim instance As Socket
Dim buffer As Byte()
Dim socketFlags As SocketFlags
Dim returnValue As Integer

returnValue = instance.Receive(buffer, socketFlags)
public int Receive (
    byte[] buffer,
    SocketFlags socketFlags
)
public:
int Receive (
    array<unsigned char>^ buffer, 
    SocketFlags socketFlags
)
public int Receive (
    byte[] buffer, 
    SocketFlags socketFlags
)
public function Receive (
    buffer : byte[], 
    socketFlags : SocketFlags
) : int

パラメータ

buffer

受信したデータストレージ場所となる Byte 型の配列

socketFlags

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

戻り値
受信したバイト数。

例外例外
例外種類条件

ArgumentNullException

buffernull 参照 (Visual Basic では Nothing) です。

SocketException

ソケットへのアクセス試みているときにエラー発生しました詳細については「解説」を参照してください

ObjectDisposedException

Socket閉じられています。

SecurityException

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

解説解説

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
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.Receive メソッド (ジェネリック IList, SocketFlags, SocketError)

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

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

このメソッドは、CLS準拠していません。  CLS準拠する代替必要な場合は、Receive(Byte[],SocketFlags) を使用してください

名前空間: System.Net.Sockets
アセンブリ: 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
)
JScript では、値型引数参照渡しされません。

パラメータ

buffers

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

socketFlags

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

errorCode

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

戻り値
受信したバイト数。

例外例外
例外種類条件

ArgumentNullException

buffersnull 参照 (Visual Basic では Nothing) です。

または

buffers.Count が 0 です。

SocketException

ソケットへのアクセス試みているときにエラー発生しました詳細については「解説」を参照してください

ObjectDisposedException

Socket閉じられています。

解説解説

このメソッドは、データ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 ライブラリから入手できます

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.Receive メソッド (Byte[], Int32, Int32, SocketFlags, SocketError)

メモ : このメソッドは、.NET Framework version 2.0新しく追加されたものです。

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

名前空間: System.Net.Sockets
アセンブリ: 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
)
JScript では、値型引数参照渡しされません。

パラメータ

buffer

受信したデータストレージ場所となる Byte 型の配列

offset

受信データ格納する bufferパラメータ内の位置

size

受信するバイト数。

socketFlags

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

errorCode

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

戻り値
受信したバイト数。

例外例外
例外種類条件

ArgumentNullException

buffernull 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

offset が 0 未満です。

または

offsetbuffer長さ超えてます。

または

size が 0 未満です。

または

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

SocketException

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

または

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

または

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

ObjectDisposedException

Socket閉じられています。

SecurityException

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

解説解説

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 ライブラリから入手できます

.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Socket.Receive メソッド

バインドされた Socket からデータ受信します
オーバーロードの一覧オーバーロードの一覧

名前 説明
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 クラス
Socket メンバ
System.Net.Sockets 名前空間
Connect
ReceiveFrom
Available
Shutdown
Close

Socket.Receive メソッド (Byte[], Int32, Int32, SocketFlags)

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

名前空間: System.Net.Sockets
アセンブリ: 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 int Receive (
    byte[] buffer,
    int offset,
    int size,
    SocketFlags socketFlags
)
public:
int Receive (
    array<unsigned char>^ buffer, 
    int offset, 
    int size, 
    SocketFlags socketFlags
)
public int Receive (
    byte[] buffer, 
    int offset, 
    int size, 
    SocketFlags socketFlags
)
public function Receive (
    buffer : byte[], 
    offset : int, 
    size : int, 
    socketFlags : SocketFlags
) : int

パラメータ

buffer

受信したデータストレージ場所となる Byte 型の配列

offset

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

size

受信するバイト数。

socketFlags

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

戻り値
受信したバイト数。

例外例外
例外種類条件

ArgumentNullException

buffernull 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

offset が 0 未満です。

または

offsetbuffer長さ超えてます。

または

size が 0 未満です。

または

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

SocketException

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

または

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

または

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

ObjectDisposedException

Socket閉じられています。

SecurityException

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

解説解説

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
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Socket.Receive」の関連用語

Socket.Receiveのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Socket.Receiveのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS