Socket.Receive Socket.Receive Socket.Receive Socket.Receive Method

定義

バインドされた Socket からデータを受信します。Receives data from a bound Socket.

オーバーロード

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

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーに格納します。Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

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

指定した SocketFlags を使用し、バインドされた Socket から指定したバイト数のデータを受信して、受信バッファー内の指定したオフセット位置に格納します。Receives the specified number of bytes from a bound Socket into the specified offset position of the receive buffer, using the specified SocketFlags.

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

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーのリストに格納します。Receives data from a bound Socket into the list of receive buffers, using the specified SocketFlags.

Receive(Span<Byte>, SocketFlags) Receive(Span<Byte>, SocketFlags) Receive(Span<Byte>, SocketFlags)
Receive(Byte[], Int32, SocketFlags) Receive(Byte[], Int32, SocketFlags) Receive(Byte[], Int32, SocketFlags)

指定した SocketFlags を使用し、バインドされた Socket から指定したバイト数のデータを受信して受信バッファーに格納します。Receives the specified number of bytes of data from a bound Socket into a receive buffer, using the specified SocketFlags.

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

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーに格納します。Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

Receive(Span<Byte>) Receive(Span<Byte>) Receive(Span<Byte>) Receive(Span<Byte>)
Receive(IList<ArraySegment<Byte>>) Receive(IList<ArraySegment<Byte>>) Receive(IList<ArraySegment<Byte>>) Receive(IList<ArraySegment<Byte>>)

バインドされた Socket からデータを受信して、受信バッファーのリストに格納します。Receives data from a bound Socket into the list of receive buffers.

Receive(Byte[]) Receive(Byte[]) Receive(Byte[]) Receive(Byte[])

バインドされた Socket からデータを受信し、受信バッファーに格納します。Receives data from a bound Socket into a receive buffer.

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

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーのリストに格納します。Receives data from a bound Socket into the list of receive buffers, using the specified SocketFlags.

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

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーに格納します。Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

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 *  -> int

パラメーター

buffer
Byte[]

受信したデータの保存場所となる Byte 型の配列。An array of type Byte that is the storage location for the received data.

offset
Int32 Int32 Int32 Int32

受信したデータを格納する、buffer パラメーター内の位置。The position in the buffer parameter to store the received data.

size
Int32 Int32 Int32 Int32

受信するバイト数。The number of bytes to receive.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.

errorCode
SocketError SocketError SocketError SocketError

ソケット エラーを格納する SocketError オブジェクト。A SocketError object that stores the socket error.

戻り値

受信されたバイト数。The number of bytes received.

例外

offset が 0 未満です。offset is less than 0.

または-or- offsetbuffer の長さを超えています。offset is greater than the length of buffer.

または-or- size が 0 未満です。size is less than 0.

または-or- size が、buffer の長さから offset パラメーターの値を引いた値を超えています。size is greater than the length of buffer minus the value of the offset parameter.

socketFlags は、値の有効な組み合わせではありません。socketFlags is not a valid combination of values.

または-or- LocalEndPoint プロパティが設定されていません。The LocalEndPoint property is not set.

または-or- Socket にアクセス中にオペレーティング システム エラーが発生しました。An operating system error occurs while accessing the Socket.

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。A caller in the call stack does not have the required permissions.

注釈

Receiveバッファー パラメーターにデータを読み取ってを正常に読み取られたバイト数を返します。The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. 呼び出すことができますReceive接続指向とコネクションレス ソケットの両方から。You can call Receive from both connection-oriented and connectionless sockets.

接続指向プロトコルを使用している場合、呼び出し必要があります。 Connect 、リモート ホスト接続を確立するためにまたはAcceptを呼び出す前に受信接続を受け入れるReceiveします。If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Receiveメソッドで確立されているリモート ホストから受信したデータの読み取りのみが、ConnectまたはAcceptメソッド。The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. コネクションレスのプロトコルを使用している場合は、使用することも、ReceiveFromメソッド。If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFrom すべてのホストから着信するデータを受信できます。ReceiveFrom will allow you to receive data arriving from any host.

読み取りについては、使用可能なデータがない場合、Receiveメソッドはブロックを使用して、タイムアウト値が設定されていない場合は、データが使用可能なまでSocket.ReceiveTimeoutします。If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. タイムアウト値を超えている場合、Receive呼び出しがスローされます、SocketExceptionします。If the time-out value was exceeded, the Receive call will throw a SocketException. モードの非ブロッキングであることで使用できるデータがない場合、プロトコル スタック バッファー、Receiveメソッドはすぐに完了し、スロー、SocketExceptionします。If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the Receive method will complete immediately and throw a SocketException. ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket. 以下の「解説」を参照してください。See Remarks below. 使用することができます、Availableプロパティ データが読み取り可能なかどうかを判断します。You can use the Available property to determine if data is available for reading. ときにAvailable0 以外の場合は、受信操作を再試行してください。When Available is non-zero, retry the receive operation.

接続指向を使用している場合SocketReceiveメソッドは、サイズのパラメーターで指定したバイト数まで使用可能な多くのデータを読み取ります。If you are using a connection-oriented Socket, the Receive method will read as much data as is available, up to the number of bytes specified by the size parameter. リモート ホストがシャット ダウンした場合、Socketとの接続、Shutdownメソッド、および使用可能なすべてのデータを受信、Receiveメソッドはすぐに完了し、0 バイトを返します。If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been received, the Receive method will complete immediately and return zero bytes.

コネクションレス型を使用している場合SocketReceiveで指定した宛先アドレスの最初のキューに置かれたデータグラムを読み取り、Connectメソッド。If you are using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. 受信したデータグラムがのサイズより大きいかどうか、bufferパラメーター、buffer設定します。 メッセージの最初の部分には、余分なデータが失われると、SocketExceptionがスローされます。If the datagram you receive is larger than the size of the buffer parameter, buffer gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

注意

表示された場合、SocketExceptionを使用して、SocketException.ErrorCode特定のエラー コードを取得するプロパティ。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得した後を参照してください、 Windows Sockets version 2 API エラー コードエラーの詳細な説明のドキュメント。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、次を参照してください。ネットワークのトレースを .NET Framework でします。For more information, see Network Tracing in the .NET Framework.

セキュリティ

SocketPermission
ネットワークからの接続を受け入れるため。for accepting connections from the network. Accept (関連する列挙体)Associated enumeration: Accept.

こちらもご覧ください

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

指定した SocketFlags を使用し、バインドされた Socket から指定したバイト数のデータを受信して、受信バッファー内の指定したオフセット位置に格納します。Receives the specified number of bytes from a bound Socket into the specified offset position of the receive buffer, using the specified SocketFlags.

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

パラメーター

buffer
Byte[]

受信したデータの格納場所である、Byte 型の配列。An array of type Byte that is the storage location for received data.

offset
Int32 Int32 Int32 Int32

受信データを格納する buffer内の場所。The location in buffer to store the received data.

size
Int32 Int32 Int32 Int32

受信するバイト数。The number of bytes to receive.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.

戻り値

受信されたバイト数。The number of bytes received.

例外

offset が 0 未満です。offset is less than 0.

または-or- offsetbuffer の長さを超えています。offset is greater than the length of buffer.

または-or- size が 0 未満です。size is less than 0.

または-or- size が、buffer の長さから offset パラメーターの値を引いた値を超えています。size is greater than the length of buffer minus the value of the offset parameter.

socketFlags は、値の有効な組み合わせではありません。socketFlags is not a valid combination of values.

または-or- LocalEndPoint プロパティが設定されていませんでした。The LocalEndPoint property was not set.

または-or- Socket にアクセス中にオペレーティング システム エラーが発生しました。An operating system error occurs while accessing the Socket.

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。A caller in the call stack does not have the required permissions.

次のコード例は、接続されたデータを受信する前にデータ バッファー、オフセット、サイズ、およびソケット フラグを指定します。Socketします。The following code example specifies a data buffer, an offset, a size, and a socket flag before receiving data on a connected 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, 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.
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バッファー パラメーターにデータを読み取ってを正常に読み取られたバイト数を返します。The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. 呼び出すことができますReceive接続指向とコネクションレス ソケットの両方から。You can call Receive from both connection-oriented and connectionless sockets.

接続指向プロトコルを使用している場合、呼び出し必要があります。 Connect 、リモート ホスト接続を確立するためにまたはAcceptを呼び出す前に受信接続を受け入れるReceiveします。If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Receiveメソッドで確立されているリモート ホストから受信したデータの読み取りのみが、ConnectまたはAcceptメソッド。The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. コネクションレスのプロトコルを使用している場合は、使用することも、ReceiveFromメソッド。If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFrom すべてのホストから着信するデータを受信できます。ReceiveFrom will allow you to receive data arriving from any host.

読み取りについては、使用可能なデータがない場合、Receiveメソッドはブロックを使用して、タイムアウト値が設定されていない場合は、データが使用可能なまでSocket.ReceiveTimeoutします。If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. タイムアウト値を超えている場合、Receive呼び出しがスローされます、SocketExceptionします。If the time-out value was exceeded, the Receive call will throw a SocketException. モードの非ブロッキングであることで使用できるデータがない場合、プロトコル スタック バッファー、Receiveメソッドはすぐに完了し、スロー、SocketExceptionします。If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the Receive method will complete immediately and throw a SocketException. ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket. 以下の「解説」を参照してください。See Remarks below. 使用することができます、Availableプロパティ データが読み取り可能なかどうかを判断します。You can use the Available property to determine if data is available for reading. ときにAvailable0 以外の場合は、受信操作を再試行してください。When Available is non-zero, retry the receive operation.

接続指向を使用している場合SocketReceiveメソッドは、サイズのパラメーターで指定したバイト数まで使用可能な多くのデータを読み取ります。If you are using a connection-oriented Socket, the Receive method will read as much data as is available, up to the number of bytes specified by the size parameter. リモート ホストがシャット ダウンした場合、Socketとの接続、Shutdownメソッド、および使用可能なすべてのデータを受信、Receiveメソッドはすぐに完了し、0 バイトを返します。If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been received, the Receive method will complete immediately and return zero bytes.

コネクションレス型を使用している場合SocketReceiveで指定した宛先アドレスの最初のキューに置かれたデータグラムを読み取り、Connectメソッド。If you are using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. 受信したデータグラムがのサイズより大きいかどうか、bufferパラメーター、buffer設定します。 メッセージの最初の部分には、余分なデータが失われると、SocketExceptionがスローされます。If the datagram you receive is larger than the size of the buffer parameter, buffer gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

注意

表示された場合、SocketExceptionを使用して、SocketException.ErrorCode特定のエラー コードを取得するプロパティ。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得した後を参照してください、 Windows Sockets version 2 API エラー コードエラーの詳細な説明のドキュメント。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、次を参照してください。ネットワークのトレースを .NET Framework でします。For more information, see Network Tracing in the .NET Framework.

セキュリティ

SocketPermission
ネットワークからの接続を受け入れるため。for accepting connections from the network. Accept (関連する列挙体)Associated enumeration: Accept.

こちらもご覧ください

Receive(Span<Byte>, SocketFlags, SocketError) Receive(Span<Byte>, SocketFlags, SocketError) Receive(Span<Byte>, SocketFlags, SocketError)

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 *  -> int

パラメーター

buffer
Span<Byte>

戻り値

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

重要

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

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

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーのリストに格納します。Receives data from a bound Socket into the list of receive buffers, using the specified SocketFlags.

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

パラメーター

buffers
IList<ArraySegment<Byte>>

受信したデータを格納する Byte 型の複数の ArraySegment<T> のリスト。A list of ArraySegment<T>s of type Byte that contains the received data.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.

errorCode
SocketError SocketError SocketError SocketError

ソケット エラーを格納する SocketError オブジェクト。A SocketError object that stores the socket error.

戻り値

受信されたバイト数。The number of bytes received.

例外

buffersnullです。buffers is null.

または-or- buffers.Count が 0 です。buffers.Count is zero.

ソケットへのアクセスを試みているときにエラーが発生しました。An error occurred while attempting to access the socket.

注釈

このメソッドにデータを読み取り、buffersパラメーターと正常に読み取られたバイト数を返します。This method reads data into the buffers parameter and returns the number of bytes successfully read. 接続指向とコネクションレス ソケットの両方から呼び出すことができます。You can call from both connection-oriented and connectionless sockets.

このオーバー ロードでは、いずれかを指定する必要があります。 または以上の受信バッファー。This overload requires you to provide one or more receive buffers. SocketFlags値の既定値はNoneします。The SocketFlags value defaults to None.

接続指向プロトコルを使用している場合、呼び出し必要があります。 Connect 、リモート ホスト接続を確立するためにまたはAcceptを呼び出す前に受信接続を受け入れるReceiveします。If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Receiveメソッドで確立されているリモート ホスト接続から受信したデータの読み取りのみが、ConnectまたはAcceptメソッド。The Receive method will only read data that arrives from the remote host connection established in the Connect or Accept method. コネクションレスのプロトコルを使用している場合は、使用することも、ReceiveFromメソッド。If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFrom すべてのホストから着信するデータを受信できます。ReceiveFrom will allow you to receive data arriving from any host.

読み取りについては、使用可能なデータがない場合、Receiveメソッドはブロックを使用して、タイムアウト値が設定されていない場合は、データが使用可能なまでSocket.ReceiveTimeoutします。If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. タイムアウト値を超えている場合、Receiveスローを呼び出し、SocketExceptionします。If the time-out value was exceeded, the Receive call throws a SocketException. モードの非ブロッキングであることで使用できるデータがない場合、プロトコル スタック バッファー、Receiveメソッドはすぐに完了し、スロー、SocketExceptionします。If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the Receive method will complete immediately and throw a SocketException. 使用することができます、Availableプロパティ データが読み取り可能なかどうかを判断します。You can use the Available property to determine if data is available for reading. ときにAvailable0 以外の場合は、受信操作を再試行してください。When Available is non-zero, retry the receive operation.

接続指向を使用している場合SocketReceiveメソッドは、バッファーのサイズの最大使用可能な多くのデータを読み取ります。If you are using a connection-oriented Socket, the Receive method will read as much data as is available, up to the size of the buffer. リモート ホストがシャット ダウンした場合、Socketとの接続、Shutdownメソッド、および使用可能なすべてのデータを受信、Receiveメソッドはすぐに完了し、0 バイトを返します。If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been received, the Receive method will complete immediately and return zero bytes.

コネクションレス型を使用している場合SocketReceiveで指定した宛先アドレスの最初のキューに置かれたデータグラムを読み取り、Connectメソッド。If you are using a connectionless Socket,Receive will read the first queued datagram from the destination address you specify in the Connect method. 受信したデータグラムがのサイズより大きいかどうか、buffersパラメーター、buffers設定します。 メッセージの最初の部分には、余分なデータが失われると、SocketExceptionがスローされます。If the datagram you receive is larger than the size of the buffers parameter, buffers gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

注意

表示された場合、SocketExceptionを使用して、SocketException.ErrorCode特定のエラー コードを取得するプロパティ。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得した後を参照してください、 Windows Sockets version 2 API エラー コードエラーの詳細な説明のドキュメント。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、次を参照してください。ネットワークのトレースを .NET Framework でします。For more information, see Network Tracing in the .NET Framework.

セキュリティ

SocketPermission
ネットワークからの接続を受け入れるため。for accepting connections from the network. Accept (関連する列挙体)Associated enumeration: Accept.

こちらもご覧ください

Receive(Span<Byte>, SocketFlags) Receive(Span<Byte>, SocketFlags) Receive(Span<Byte>, SocketFlags)

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

パラメーター

buffer
Span<Byte>

戻り値

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

指定した SocketFlags を使用し、バインドされた Socket から指定したバイト数のデータを受信して受信バッファーに格納します。Receives the specified number of bytes of data from a bound Socket into a receive buffer, using the specified SocketFlags.

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

パラメーター

buffer
Byte[]

受信したデータの保存場所となる Byte 型の配列。An array of type Byte that is the storage location for the received data.

size
Int32 Int32 Int32 Int32

受信するバイト数。The number of bytes to receive.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.

戻り値

受信されたバイト数。The number of bytes received.

例外

sizebuffer のサイズを超えています。size exceeds the size of buffer.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。A caller in the call stack does not have the required permissions.

次に検出されたデータを受信するbufferを指定してNoneSocketFlagsします。The following receives the data found into buffer, and specifies None for SocketFlags.

// 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パラメーターと正常に読み取られたバイト数を返します。The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. 呼び出すことができますReceive接続指向とコネクションレス ソケットの両方から。You can call Receive from both connection-oriented and connectionless sockets.

このオーバー ロード受信バッファー、バイト、受信するために必要な数を指定する必要のみSocketFlagsします。This overload only requires you to provide a receive buffer, the number of bytes you want to receive, and the necessary SocketFlags.

接続指向プロトコルを使用している場合、呼び出し必要があります。 Connect 、リモート ホスト接続を確立するためにまたはAcceptを呼び出す前に受信接続を受け入れるReceiveします。If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Receiveメソッドで確立されているリモート ホストから受信したデータの読み取りのみが、ConnectまたはAcceptメソッド。The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. コネクションレスのプロトコルを使用している場合は、使用することも、ReceiveFromメソッド。If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFrom すべてのホストから着信するデータを受信できます。ReceiveFrom will allow you to receive data arriving from any host.

読み取りについては、使用可能なデータがない場合、Receiveメソッドはブロックを使用して、タイムアウト値が設定されていない場合は、データが使用可能なまでSocket.ReceiveTimeoutします。If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. タイムアウト値を超えている場合、Receive呼び出しがスローされます、SocketExceptionします。If the time-out value was exceeded, the Receive call will throw a SocketException. モードの非ブロッキングであることで使用できるデータがない場合、プロトコル スタック バッファー、Receiveメソッドはすぐに完了し、スロー、SocketExceptionします。If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, The Receive method will complete immediately and throw a SocketException. 使用することができます、Availableプロパティ データが読み取り可能なかどうかを判断します。You can use the Available property to determine if data is available for reading. ときにAvailable0 以外の場合は、再試行、受信操作。When Available is non-zero, retry your receive operation.

接続指向を使用している場合SocketReceiveメソッドがで指定したバイト数まで使用可能な多くのデータを読み取る、sizeパラメーター。If you are using a connection-oriented Socket, the Receive method will read as much data as is available, up to the number of bytes specified by the size parameter. リモート ホストがシャット ダウンした場合、Socketとの接続、Shutdownメソッド、および使用可能なすべてのデータを受信、Receiveメソッドはすぐに完了し、0 バイトを返します。If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been received, the Receive method will complete immediately and return zero bytes.

コネクションレス型を使用している場合SocketReceiveで指定した宛先アドレスの最初のキューに置かれたデータグラムを読み取り、Connectメソッド。If you are using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. 受信したデータグラムがのサイズより大きいかどうか、bufferパラメーター、buffer設定します。 メッセージの最初の部分には、余分なデータが失われると、SocketExceptionがスローされます。If the datagram you receive is larger than the size of the buffer parameter, buffer gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

注意

表示された場合、SocketExceptionを使用して、SocketException.ErrorCode特定のエラー コードを取得するプロパティ。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得した後を参照してください、 Windows Sockets version 2 API エラー コードエラーの詳細な説明のドキュメント。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、次を参照してください。ネットワークのトレースを .NET Framework でします。For more information, see Network Tracing in the .NET Framework.

セキュリティ

SocketPermission
ネットワークからの接続を受け入れるため。for accepting connections from the network. Accept (関連する列挙体)Associated enumeration: Accept.

こちらもご覧ください

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

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーに格納します。Receives data from a bound Socket into a receive buffer, using the specified SocketFlags.

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

パラメーター

buffer
Byte[]

受信したデータの保存場所となる Byte 型の配列。An array of type Byte that is the storage location for the received data.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.

戻り値

受信されたバイト数。The number of bytes received.

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。A caller in the call stack does not have the required permissions.

次のコード例は、データ バッファーを指定し、SocketFlagsで接続されたデータを受信するためSocketThe following code example specifies a data buffer, and SocketFlags for receiving data on a connected 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バッファー パラメーターにデータを読み取ってを正常に読み取られたバイト数を返します。The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. 呼び出すことができますReceive接続指向とコネクションレス ソケットの両方から。You can call Receive from both connection-oriented and connectionless sockets.

このオーバー ロードだけ指定する必要が受信バッファーと、必要なSocketFlagsします。This overload only requires you to provide a receive buffer and the necessary SocketFlags. バッファーのオフセットの既定値は 0 で、サイズの既定値はバイトのパラメーターの長さ。The buffer offset defaults to 0, and the size defaults to the length of the byte parameter.

接続指向プロトコルを使用している場合、呼び出し必要があります。 Connect 、リモート ホスト接続を確立するためにまたはAcceptを呼び出す前に受信接続を受け入れるReceiveします。If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Receiveメソッドで確立されているリモート ホストから受信したデータの読み取りのみが、ConnectまたはAcceptメソッド。The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. コネクションレスのプロトコルを使用している場合は、使用することも、ReceiveFromメソッド。If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFrom すべてのホストから着信するデータを受信できます。ReceiveFrom will allow you to receive data arriving from any host.

読み取りについては、使用可能なデータがない場合、Receiveメソッドはデータが利用可能になるまでブロックされます。If no data is available for reading, the Receive method will block until data is available. モードの非ブロッキングであることと、プロトコル スタック バッファーできるデータがない場合、Receiveメソッドはすぐに完了し、スロー、SocketExceptionします。If you are in non-blocking mode, and there is no data available in the protocol stack buffer, the Receive method will complete immediately and throw a SocketException. 使用することができます、Availableプロパティ データが読み取り可能なかどうかを判断します。You can use the Available property to determine if data is available for reading. ときにAvailable0 以外の場合は、再試行、受信操作。When Available is non-zero, retry your receive operation.

接続指向を使用している場合SocketReceiveメソッドは、バッファーのサイズの最大使用量のデータを読み取ります。If you are using a connection-oriented Socket, the Receive method will read as much data as is available up to the size of the buffer. リモート ホストがシャット ダウンした場合、Socketとの接続、Shutdownメソッド、および使用可能なすべてのデータを受信、Receiveメソッドはすぐに完了し、0 バイトを返します。If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been received, the Receive method will complete immediately and return zero bytes.

コネクションレス型を使用している場合SocketReceiveで指定した宛先アドレスの最初のエンキューされたデータグラムを読み取り、Connectメソッド。If you are using a connectionless Socket, Receive will read the first enqueued datagram from the destination address you specify in the Connect method. 受信したデータグラムがのサイズより大きいかどうか、bufferパラメーター、buffer設定します。 メッセージの最初の部分には、余分なデータが失われると、SocketExceptionがスローされます。If the datagram you receive is larger than the size of the buffer parameter, buffer gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

注意

表示された場合、SocketExceptionを使用して、SocketException.ErrorCode特定のエラー コードを取得するプロパティ。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得した後を参照してください、 Windows Sockets version 2 API エラー コードエラーの詳細な説明のドキュメント。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、次を参照してください。ネットワークのトレースを .NET Framework でします。For more information, see Network Tracing in the .NET Framework.

セキュリティ

SocketPermission
ネットワークからの接続を受け入れるため。for accepting connections from the network. Accept (関連する列挙体)Associated enumeration: Accept.

こちらもご覧ください

Receive(Span<Byte>) Receive(Span<Byte>) Receive(Span<Byte>) Receive(Span<Byte>)

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>

戻り値

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

バインドされた Socket からデータを受信して、受信バッファーのリストに格納します。Receives data from a bound Socket into the list of receive buffers.

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> のリスト。A list of ArraySegment<T>s of type Byte that contains the received data.

戻り値

受信されたバイト数。The number of bytes received.

例外

buffer パラメーターが null です。The buffer parameter is null.

ソケットへのアクセスを試みているときにエラーが発生しました。An error occurred while attempting to access the socket.

注釈

このメソッドは、バッファー パラメーターにデータを読み取るし、正常に読み取られたバイト数を返します。This method reads data into the buffers parameter and returns the number of bytes successfully read. 接続指向とコネクションレス ソケットの両方から呼び出すことができます。You can call from both connection-oriented and connectionless sockets.

このオーバー ロードでは、いずれかを指定する必要があります。 または以上の受信バッファー。This overload requires you to provide one or more receive buffers.

接続指向プロトコルを使用している場合、呼び出し必要があります。 Connect 、リモート ホスト接続を確立するためにまたはAcceptを呼び出す前に受信接続を受け入れるReceiveします。If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Receiveメソッドで確立されているリモート ホスト接続から受信したデータの読み取りのみが、ConnectまたはAcceptメソッド。The Receive method will only read data that arrives from the remote host connection established in the Connect or Accept method. コネクションレスのプロトコルを使用している場合は、使用することも、ReceiveFromメソッド。If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFrom すべてのホストから着信するデータを受信できます。ReceiveFrom will allow you to receive data arriving from any host.

読み取りについては、使用可能なデータがない場合、Receiveメソッドはブロックを使用して、タイムアウト値が設定されていない場合は、データが使用可能なまでSocket.ReceiveTimeoutします。If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. タイムアウト値を超えている場合、Receive呼び出しがスローされます、SocketExceptionします。If the time-out value was exceeded, the Receive call will throw a SocketException. モードの非ブロッキングであることで使用できるデータがない場合、プロトコル スタック バッファー、Receiveメソッドはすぐに完了し、スロー、SocketExceptionします。If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the Receive method will complete immediately and throw a SocketException. 使用することができます、Availableプロパティ データが読み取り可能なかどうかを判断します。You can use the Available property to determine if data is available for reading. ときにAvailable0 以外の場合は、受信操作を再試行してください。When Available is non-zero, retry the receive operation.

接続指向を使用している場合SocketReceiveメソッドは、バッファーのサイズの最大使用可能な多くのデータを読み取ります。If you are using a connection-oriented Socket, the Receive method will read as much data as is available, up to the size of the buffer. リモート ホストがシャット ダウンした場合、Socketとの接続、Shutdownメソッド、および使用可能なすべてのデータを受信、Receiveメソッドはすぐに完了し、0 バイトを返します。If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been received, the Receive method will complete immediately and return zero bytes.

コネクションレス型を使用している場合SocketReceiveで指定した宛先アドレスの最初のエンキューされたデータグラムを読み取り、Connectメソッド。If you are using a connectionless Socket, Receive will read the first enqueued datagram from the destination address you specify in the Connect method. 受信したデータグラムがのサイズより大きいかどうか、buffersパラメーター、buffers設定します。 メッセージの最初の部分には、余分なデータが失われると、SocketExceptionがスローされます。If the datagram you receive is larger than the size of the buffers parameter, buffers gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

注意

表示された場合、SocketExceptionを使用して、SocketException.ErrorCode特定のエラー コードを取得するプロパティ。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得した後を参照してください、 Windows Sockets version 2 API エラー コードエラーの詳細な説明のドキュメント。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

このメンバーが、アプリケーションでネットワークのトレースを有効にすると、トレース情報を出力します。Note This member outputs trace information when you enable network tracing in your application. 詳細については、次を参照してください。ネットワークのトレースを .NET Framework でします。For more information, see Network Tracing in the .NET Framework.

Receive(Byte[]) Receive(Byte[]) Receive(Byte[]) Receive(Byte[])

バインドされた Socket からデータを受信し、受信バッファーに格納します。Receives data from a bound Socket into a receive buffer.

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 型の配列。An array of type Byte that is the storage location for the received data.

戻り値

受信されたバイト数。The number of bytes received.

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

コール スタック内の呼び出し元が、必要なアクセス許可を保持していません。A caller in the call stack does not have the required permissions.

次のコード例で、接続されたデータを受信するSocketします。The following code example receives data on a connected 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バッファー パラメーターにデータを読み取ってを正常に読み取られたバイト数を返します。The Receive method reads data into the buffer parameter and returns the number of bytes successfully read. 呼び出すことができますReceive接続指向とコネクションレス ソケットの両方から。You can call Receive from both connection-oriented and connectionless sockets.

のみこのオーバー ロードでは、受信バッファーを提供する必要があります。This overload only requires you to provide a receive buffer. バッファーのオフセットの既定値は 0、サイズの既定値は、バッファー パラメーターの長さとSocketFlags値の既定値はNoneします。The buffer offset defaults to 0, the size defaults to the length of the buffer parameter, and the SocketFlags value defaults to None.

接続指向プロトコルを使用している場合、呼び出し必要があります。 Connect 、リモート ホスト接続を確立するためにまたはAcceptを呼び出す前に受信接続を受け入れるReceiveします。If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Receiveメソッドで確立されているリモート ホストから受信したデータの読み取りのみが、ConnectまたはAcceptメソッド。The Receive method will only read data that arrives from the remote host established in the Connect or Accept method. コネクションレスのプロトコルを使用している場合は、使用することも、ReceiveFromメソッド。If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFrom すべてのホストから着信するデータを受信できます。ReceiveFrom will allow you to receive data arriving from any host.

読み取りについては、使用可能なデータがない場合、Receiveメソッドはブロックを使用して、タイムアウト値が設定されていない場合は、データが使用可能なまでSocket.ReceiveTimeoutします。If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. タイムアウト値を超えている場合、Receive呼び出しがスローされます、SocketExceptionします。If the time-out value was exceeded, the Receive call will throw a SocketException. モードの非ブロッキングであることで使用できるデータがない場合、プロトコル スタック バッファー、Receiveメソッドはすぐに完了し、スロー、SocketExceptionします。If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the Receive method will complete immediately and throw a SocketException. 使用することができます、Availableプロパティ データが読み取り可能なかどうかを判断します。You can use the Available property to determine if data is available for reading. ときにAvailable0 以外の場合は、受信操作を再試行してください。When Available is non-zero, retry the receive operation.

接続指向を使用している場合SocketReceiveメソッドは、バッファーのサイズの最大使用可能な多くのデータを読み取ります。If you are using a connection-oriented Socket, the Receive method will read as much data as is available, up to the size of the buffer. リモート ホストがシャット ダウンした場合、Socketとの接続、Shutdownメソッド、および使用可能なすべてのデータを受信、Receiveメソッドはすぐに完了し、0 バイトを返します。If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been received, the Receive method will complete immediately and return zero bytes.

コネクションレス型を使用している場合SocketReceiveで指定した宛先アドレスの最初のキューに置かれたデータグラムを読み取り、Connectメソッド。If you are using a connectionless Socket, Receive will read the first queued datagram from the destination address you specify in the Connect method. 受信したデータグラムがのサイズより大きいかどうか、bufferパラメーター、buffer設定します。 メッセージの最初の部分には、余分なデータが失われると、SocketExceptionがスローされます。If the datagram you receive is larger than the size of the buffer parameter, buffer gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

注意

表示された場合、SocketExceptionを使用して、SocketException.ErrorCode特定のエラー コードを取得するプロパティ。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得した後を参照してください、 Windows Sockets version 2 API エラー コードエラーの詳細な説明のドキュメント。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、次を参照してください。ネットワークのトレースを .NET Framework でします。For more information, see Network Tracing in the .NET Framework.

セキュリティ

SocketPermission
ネットワークからの接続を受け入れるため。for accepting connections from the network. Accept (関連する列挙体)Associated enumeration: Accept.

こちらもご覧ください

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

重要

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

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

指定した SocketFlags を使用し、バインドされた Socket からデータを受信して受信バッファーのリストに格納します。Receives data from a bound Socket into the list of receive buffers, using the specified SocketFlags.

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

パラメーター

buffers
IList<ArraySegment<Byte>>

受信したデータを格納する Byte 型の複数の ArraySegment<T> のリスト。A list of ArraySegment<T>s of type Byte that contains the received data.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.

戻り値

受信されたバイト数。The number of bytes received.

例外

buffersnullです。buffers is null.

または-or- buffers.Count が 0 です。buffers.Count is zero.

ソケットへのアクセスを試みているときにエラーが発生しました。An error occurred while attempting to access the socket.

次のコード例は、接続されたデータを受信する方法を示しますSocketします。The following code example demonstrates how to receive data on a connected 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パラメーターと正常に読み取られたバイト数を返します。This method reads data into the buffers parameter and returns the number of bytes successfully read. 接続指向とコネクションレス ソケットの両方から呼び出すことができます。You can call from both connection-oriented and connectionless sockets.

このオーバー ロードでは、いずれかを指定する必要があります。 または以上の受信バッファー。This overload requires you to provide one or more receive buffers. SocketFlags値の既定値はNoneします。The SocketFlags value defaults to None.

接続指向プロトコルを使用している場合、呼び出し必要があります。 Connect 、リモート ホスト接続を確立するためにまたはAcceptを呼び出す前に受信接続を受け入れるReceiveします。If you are using a connection-oriented protocol, you must either call Connect to establish a remote host connection, or Accept to accept an incoming connection prior to calling Receive. Receiveメソッドで確立されているリモート ホスト接続から受信したデータの読み取りのみが、ConnectまたはAcceptメソッド。The Receive method will only read data that arrives from the remote host connection established in the Connect or Accept method. コネクションレスのプロトコルを使用している場合は、使用することも、ReceiveFromメソッド。If you are using a connectionless protocol, you can also use the ReceiveFrom method. ReceiveFrom すべてのホストから着信するデータを受信できます。ReceiveFrom will allow you to receive data arriving from any host.

読み取りについては、使用可能なデータがない場合、Receiveメソッドはブロックを使用して、タイムアウト値が設定されていない場合は、データが使用可能なまでSocket.ReceiveTimeoutします。If no data is available for reading, the Receive method will block until data is available, unless a time-out value was set by using Socket.ReceiveTimeout. タイムアウト値を超えている場合、Receiveスローを呼び出し、SocketExceptionします。If the time-out value was exceeded, the Receive call throws a SocketException. モードの非ブロッキングであることで使用できるデータがない場合、プロトコル スタック バッファー、Receiveメソッドはすぐに完了し、スロー、SocketExceptionします。If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the Receive method will complete immediately and throw a SocketException. 使用することができます、Availableプロパティ データが読み取り可能なかどうかを判断します。You can use the Available property to determine if data is available for reading. ときにAvailable0 以外の場合は、受信操作を再試行してください。When Available is non-zero, retry the receive operation.

接続指向を使用している場合SocketReceiveメソッドは、バッファーのサイズの最大使用可能な多くのデータを読み取ります。If you are using a connection-oriented Socket, the Receive method will read as much data as is available, up to the size of the buffer. リモート ホストがシャット ダウンした場合、Socketとの接続、Shutdownメソッド、および使用可能なすべてのデータを受信、Receiveメソッドはすぐに完了し、0 バイトを返します。If the remote host shuts down the Socket connection with the Shutdown method, and all available data has been received, the Receive method will complete immediately and return zero bytes.

コネクションレス型を使用している場合SocketReceiveで指定した宛先アドレスの最初のエンキューされたデータグラムを読み取り、Connectメソッド。If you are using a connectionless Socket, Receive will read the first enqueued datagram from the destination address you specify in the Connect method. 受信したデータグラムがのサイズより大きいかどうか、buffersパラメーター、buffers設定します。 メッセージの最初の部分には、余分なデータが失われると、SocketExceptionがスローされます。If the datagram you receive is larger than the size of the buffers parameter, buffers gets filled with the first part of the message, the excess data is lost and a SocketException is thrown.

注意

表示された場合、SocketExceptionを使用して、SocketException.ErrorCode特定のエラー コードを取得するプロパティ。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得した後を参照してください、 Windows Sockets version 2 API エラー コードエラーの詳細な説明のドキュメント。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、次を参照してください。ネットワークのトレースを .NET Framework でします。For more information, see Network Tracing in the .NET Framework.

セキュリティ

SocketPermission
ネットワークからの接続を受け入れるため。for accepting connections from the network. Accept (関連する列挙体)Associated enumeration: Accept.

こちらもご覧ください

適用対象