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 * SocketError -> 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. メソッドは、メソッドConnectまたはAcceptメソッドで確立されたリモートホストから到着したデータのみを読み取ります。 ReceiveThe 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. タイムアウト値を超えた場合、 ReceiveSocketException呼び出すと、がスローされます。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. Available 0 以外の場合は、受信操作を再試行します。When Available is non-zero, retry the receive operation.

接続指向Socket Receiveのを使用している場合、メソッドは、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.

コネクションレスSocketを使用しているReceive場合、は、 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. メソッドは、メソッドConnectまたはAcceptメソッドで確立されたリモートホストから到着したデータのみを読み取ります。 ReceiveThe 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. タイムアウト値を超えた場合、 ReceiveSocketException呼び出すと、がスローされます。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. Available 0 以外の場合は、受信操作を再試行します。When Available is non-zero, retry the receive operation.

接続指向Socket Receiveのを使用している場合、メソッドは、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.

コネクションレスSocketを使用しているReceive場合、は、 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 * SocketError -> 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 * SocketError -> 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.

このオーバーロードでは、1つ以上の受信バッファーを指定する必要があります。This overload requires you to provide one or more receive buffers. 既定値はSocketFlags です。NoneThe 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. メソッドは、メソッドConnectまたはAcceptメソッドで確立されたリモートホスト接続から受信したデータのみを読み取ります。 ReceiveThe 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. タイムアウト値を超えた場合、この呼び出しはReceiveSocketExceptionスローします。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. Available 0 以外の場合は、受信操作を再試行します。When Available is non-zero, retry the receive operation.

接続指向Socketのを使用している場合、 Receiveメソッドは、バッファーのサイズまで、使用可能な限り多くのデータを読み取ります。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.

コネクションレスSocketを使用しているReceive場合、は、 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あるデータを受け取り、にSocketFlagsを指定Noneします。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. メソッドは、メソッドConnectまたはAcceptメソッドで確立されたリモートホストから到着したデータのみを読み取ります。 ReceiveThe 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. タイムアウト値を超えた場合、 ReceiveSocketException呼び出すと、がスローされます。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. Available 0 以外の場合は、受信操作を再試行してください。When Available is non-zero, retry your receive operation.

接続指向Socket sizeのを使用している場合、メソッドは、パラメーターで指定されたバイト数まで、使用可能な量のデータを読み取ります。ReceiveIf 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.

コネクションレスSocketを使用しているReceive場合、は、 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を指定し、接続されているSocketでデータを受信します。The 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. メソッドは、メソッドConnectまたはAcceptメソッドで確立されたリモートホストから到着したデータのみを読み取ります。 ReceiveThe 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. Available 0 以外の場合は、受信操作を再試行してください。When Available is non-zero, retry your receive operation.

接続指向Socketのを使用している場合Receive 、メソッドは、バッファーのサイズまで使用可能な量のデータを読み取ります。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.

コネクションレスSocket型を使用してReceiveいる場合、は、 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.

注釈

このメソッドは、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.

このオーバーロードでは、1つ以上の受信バッファーを指定する必要があります。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. メソッドは、メソッドConnectまたはAcceptメソッドで確立されたリモートホスト接続から受信したデータのみを読み取ります。 ReceiveThe 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. タイムアウト値を超えた場合、 ReceiveSocketException呼び出すと、がスローされます。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. Available 0 以外の場合は、受信操作を再試行します。When Available is non-zero, retry the receive operation.

接続指向Socketのを使用している場合、 Receiveメソッドは、バッファーのサイズまで、使用可能な限り多くのデータを読み取ります。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.

コネクションレスSocket型を使用してReceiveいる場合、は、 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. メソッドは、メソッドConnectまたはAcceptメソッドで確立されたリモートホストから到着したデータのみを読み取ります。 ReceiveThe 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. タイムアウト値を超えた場合、 ReceiveSocketException呼び出すと、がスローされます。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. Available 0 以外の場合は、受信操作を再試行します。When Available is non-zero, retry the receive operation.

接続指向Socketのを使用している場合、 Receiveメソッドは、バッファーのサイズまで、使用可能な限り多くのデータを読み取ります。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.

コネクションレスSocketを使用しているReceive場合、は、 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.

このオーバーロードでは、1つ以上の受信バッファーを指定する必要があります。This overload requires you to provide one or more receive buffers. 既定値はSocketFlags です。NoneThe 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. メソッドは、メソッドConnectまたはAcceptメソッドで確立されたリモートホスト接続から受信したデータのみを読み取ります。 ReceiveThe 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. タイムアウト値を超えた場合、この呼び出しはReceiveSocketExceptionスローします。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. Available 0 以外の場合は、受信操作を再試行します。When Available is non-zero, retry the receive operation.

接続指向Socketのを使用している場合、 Receiveメソッドは、バッファーのサイズまで、使用可能な限り多くのデータを読み取ります。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.

コネクションレスSocket型を使用してReceiveいる場合、は、 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.

こちらもご覧ください

適用対象