Socket.ReceiveFrom Socket.ReceiveFrom Socket.ReceiveFrom Socket.ReceiveFrom Method

定義

データグラムを受信し、ソース エンドポイントを格納します。Receives a datagram and stores the source endpoint.

オーバーロード

ReceiveFrom(Byte[], SocketFlags, EndPoint) ReceiveFrom(Byte[], SocketFlags, EndPoint) ReceiveFrom(Byte[], SocketFlags, EndPoint)

指定した SocketFlags を使用し、データグラムを受信してデータバッファーに格納します。さらに、エンドポイントを格納します。Receives a datagram into the data buffer, using the specified SocketFlags, and stores the endpoint.

ReceiveFrom(Byte[], EndPoint) ReceiveFrom(Byte[], EndPoint) ReceiveFrom(Byte[], EndPoint) ReceiveFrom(Byte[], EndPoint)

データグラムを受信してデータバッファーに格納します。さらに、エンドポイントを格納します。Receives a datagram into the data buffer and stores the endpoint.

ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint) ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint) ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)

指定した SocketFlags を使用し、指定したバイト数のデータを受信してデータ バッファーに格納します。さらに、エンドポイントを格納します。Receives the specified number of bytes into the data buffer, using the specified SocketFlags, and stores the endpoint.

ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint) ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint) ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)

指定した SocketFlags を使用して、指定したバイト数のデータを受信して、データ バッファー内の指定した位置に格納します。またエンドポイントを格納します。Receives the specified number of bytes of data into the specified location of the data buffer, using the specified SocketFlags, and stores the endpoint.

ReceiveFrom(Byte[], SocketFlags, EndPoint) ReceiveFrom(Byte[], SocketFlags, EndPoint) ReceiveFrom(Byte[], SocketFlags, EndPoint)

指定した SocketFlags を使用し、データグラムを受信してデータバッファーに格納します。さらに、エンドポイントを格納します。Receives a datagram into the data buffer, using the specified SocketFlags, and stores the endpoint.

public:
 int ReceiveFrom(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : 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.

remoteEP
EndPoint EndPoint EndPoint EndPoint

リモート サーバーを表す、参照渡しされた EndPointAn EndPoint, passed by reference, that represents the remote server.

戻り値

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

例外

buffernullです。buffer is null.

- または --or- remoteEPnullです。remoteEP is null.

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

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

次のコード例では、リモート ホストからコネクションレスのデータグラムを受信します。The following code example receives a connectionless datagram from a remote host. SocketFlags 渡される、ReceiveFromメソッド。SocketFlags are passed to the ReceiveFrom method.

static void ReceiveFrom2()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IpEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine( "Waiting to receive datagrams from client..." );
   // This call blocks. 
   s->ReceiveFrom( msg, SocketFlags::None, senderRemote );
   s->Close();
}
public static void ReceiveFrom2()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);
    
    // Creates an IpEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    
    byte[] msg = new Byte[256];
    Console.WriteLine ("Waiting to receive datagrams from client...");
    // This call blocks. 
    s.ReceiveFrom(msg, SocketFlags.None, ref senderRemote);
    s.Close();
}
Public Shared Sub ReceiveFrom2() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IpEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any, 0)
    Dim senderRemote As EndPoint = CType(sender, EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    
    Dim msg() As Byte = New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    ' This call blocks. 
    s.ReceiveFrom(msg, SocketFlags.None, senderRemote)
    s.Close()

End Sub 'ReceiveFrom2

注釈

ReceiveFromメソッドへのデータを読み取り、bufferパラメーターが、正常に読み取られたバイト数を返し、データの送信元のリモート ホスト エンドポイントをキャプチャします。The ReceiveFrom method reads data into the buffer parameter, returns the number of bytes successfully read, and captures the remote host endpoint from which the data was sent. このメソッドは、不明なホストまたは複数のホストからコネクションレスのデータグラムを受信する場合に便利です。This method is useful if you intend to receive connectionless datagrams from an unknown host or multiple hosts.

このオーバー ロードするために必要な受信バッファーを提供する必要のみSocketFlags、およびEndPointリモート ホストを表します。This overload only requires you to provide a receive buffer, the necessary SocketFlags, and an EndPoint that represents the remote host. オフセットの既定値 0 とサイズの既定値はバッファー パラメーターの長さにします。The offset defaults to 0 and the size defaults to the length of the buffer parameter.

注意

呼び出しの前にReceiveFrom、明示的にバインドする必要があります、Socketを使用して、ローカル エンドポイントをBindメソッド。Before calling ReceiveFrom, you must explicitly bind the Socket to a local endpoint using the Bind method. 表示されない場合、ReceiveFromがスローされます、SocketExceptionします。If you do not, ReceiveFrom will throw a SocketException.

コネクションレスのプロトコル使用ReceiveFromはローカル ネットワーク バッファーに受信した最初のエンキューされたデータグラムを読み取ります。With connectionless protocols, ReceiveFrom will read the first enqueued datagram received into the local network buffer. 受信したデータグラムがのサイズより大きいかどうかbufferReceiveFromメソッドは入力buffer、メッセージをそのまま可能であれば、および throw の多くで、SocketExceptionします。If the datagram you receive is larger than the size of buffer, the ReceiveFrom method will fill buffer with as much of the message as is possible, and throw a SocketException. 信頼性の低いプロトコルを使用している場合は、余分なデータが失われます。If you are using an unreliable protocol, the excess data will be lost. 信頼性の高いプロトコルを使用している場合は、余分なデータは、サービス プロバイダーによって保持されますを呼び出して取得することができます、ReceiveFromのに十分な大きさのバッファー。If you are using a reliable protocol, the excess data will be retained by the service provider and you can retrieve it by calling the ReceiveFrom method with a large enough buffer.

読み取りについては、使用可能なデータがない場合、ReceiveFromメソッドはデータが利用可能になるまでブロックされます。If no data is available for reading, the ReceiveFrom method will block until data is available. モードの非ブロッキングであることで使用できるデータがない場合、プロトコル スタック バッファー、ReceiveFromメソッドはすぐに完了し、スロー、SocketExceptionします。If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the ReceiveFrom 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.

ReceiveFromコネクションレスのプロトコルのものはでも接続指向プロトコルを使用することができます。Although ReceiveFrom is intended for connectionless protocols, you can use a connection-oriented protocol as well. これを行う場合は、する必要がありますまずか接続を確立するリモート ホストを呼び出して、Connectメソッドか、着信リモートを呼び出して接続をホスト、Acceptメソッド。If you choose to do so, you must first either establish a remote host connection by calling the Connect method or accept an incoming remote host connection by calling the Accept method. 確立したり、接続を呼び出す前に許可しない場合、ReceiveFrom取得は、メソッド、SocketExceptionします。If you do not establish or accept a connection before calling the ReceiveFrom method, you will get a SocketException. 呼び出しの前に、コネクションレスのプロトコルの既定のリモート ホストを確立することも、ReceiveFromメソッド。You can also establish a default remote host for a connectionless protocol prior to calling the ReceiveFrom method. このような場合は、のいずれかで、ReceiveFromメソッドは無視されます、remoteEPパラメーターのみから、接続されているデータや既定のリモート ホストを受信します。In either of these cases, the ReceiveFrom method will ignore the remoteEP parameter and only receive data from the connected or default remote host.

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

注意

表示された場合、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.

注意

AddressFamilyEndPointで使用されるReceiveFromと一致する必要があります、AddressFamilyEndPointで使用されるSendToします。The AddressFamily of the EndPoint used in ReceiveFrom needs to match the AddressFamily of the EndPoint used in SendTo.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。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.

こちらもご覧ください

ReceiveFrom(Byte[], EndPoint) ReceiveFrom(Byte[], EndPoint) ReceiveFrom(Byte[], EndPoint) ReceiveFrom(Byte[], EndPoint)

データグラムを受信してデータバッファーに格納します。さらに、エンドポイントを格納します。Receives a datagram into the data buffer and stores the endpoint.

public:
 int ReceiveFrom(cli::array <System::Byte> ^ buffer, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] *  -> int
Public Function ReceiveFrom (buffer As Byte(), ByRef remoteEP As EndPoint) As Integer

パラメーター

buffer
Byte[]

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

remoteEP
EndPoint EndPoint EndPoint EndPoint

リモート サーバーを表す、参照渡しされた EndPointAn EndPoint, passed by reference, that represents the remote server.

戻り値

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

例外

buffernullです。buffer is null.

- または --or- remoteEPnullです。remoteEP is null.

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

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

次のコード例では、リモート ホストからコネクションレスのデータグラムを受信します。The following code example receives a connectionless datagram from a remote host.

static void ReceiveFrom1()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IPEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine( "Waiting to receive datagrams from client..." );
   
   // This call blocks. 
   s->ReceiveFrom( msg, senderRemote );
   s->Close();
}
public static void ReceiveFrom1()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);
  
    // Creates an IPEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    
    byte[] msg = new Byte[256];
    Console.WriteLine ("Waiting to receive datagrams from client...");
    
    // This call blocks. 
    s.ReceiveFrom(msg, ref senderRemote);
    s.Close();
}
Public Shared Sub ReceiveFrom1() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IPEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any, 0)
    Dim senderRemote As EndPoint = CType(sender, EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    
    Dim msg() As Byte = New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    
    ' This call blocks. 
    s.ReceiveFrom(msg, senderRemote)
    s.Close()

End Sub 'ReceiveFrom1

注釈

ReceiveFromメソッドへのデータを読み取り、bufferパラメーターが、正常に読み取られたバイト数を返し、データの送信元のリモート ホスト エンドポイントをキャプチャします。The ReceiveFrom method reads data into the buffer parameter, returns the number of bytes successfully read, and captures the remote host endpoint from which the data was sent. このメソッドは、不明なホストまたは複数のホストからコネクションレスのデータグラムを受信する場合に便利です。This method is useful if you intend to receive connectionless datagrams from an unknown host or multiple hosts.

このオーバー ロードだけ指定する必要が、受信buffer、およびEndPointリモート ホストを表します。This overload only requires you to provide a receive buffer, and an EndPoint that represents the remote host. バッファーのオフセットの既定値は 0。The buffer offset defaults to 0. 既定値の長さは、サイズ、bufferパラメーターとsocketFlags値の既定値はNoneします。The size defaults to the length of the buffer parameter and the socketFlags value defaults to None.

注意

呼び出しの前にReceiveFrom、明示的にバインドする必要があります、Socketを使用して、ローカル エンドポイントをBindメソッド。Before calling ReceiveFrom, you must explicitly bind the Socket to a local endpoint using the Bind method. 表示されない場合、ReceiveFromがスローされます、SocketExceptionします。If you do not, ReceiveFrom will throw a SocketException.

コネクションレスのプロトコル使用ReceiveFromはローカル ネットワーク バッファーに受信した最初のエンキューされたデータグラムを読み取ります。With connectionless protocols, ReceiveFrom will read the first enqueued datagram received into the local network buffer. 受信したデータグラムがのサイズより大きいかどうかbufferReceiveFromメソッドは入力buffer、メッセージをそのまま可能であれば、および throw の多くで、SocketExceptionします。If the datagram you receive is larger than the size of buffer, the ReceiveFrom method will fill buffer with as much of the message as is possible, and throw a SocketException. 信頼性の低いプロトコルを使用している場合は、余分なデータが失われます。If you are using an unreliable protocol, the excess data will be lost. 信頼性の高いプロトコルを使用している場合は、余分なデータは、サービス プロバイダーによって保持されますを呼び出して取得することができます、ReceiveFromのに十分な大きさのバッファー。If you are using a reliable protocol, the excess data will be retained by the service provider and you can retrieve it by calling the ReceiveFrom method with a large enough buffer.

読み取りについては、使用可能なデータがない場合、ReceiveFromメソッドはデータが利用可能になるまでブロックされます。If no data is available for reading, the ReceiveFrom method will block until data is available. モードの非ブロッキングであることで使用できるデータがない場合、プロトコル スタック バッファー、ReceiveFromメソッドはすぐに完了し、スロー、SocketExceptionします。If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the ReceiveFrom 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.

ReceiveFromコネクションレスのプロトコルのものはでも接続指向プロトコルを使用することができます。Although ReceiveFrom is intended for connectionless protocols, you can use a connection-oriented protocol as well. これを行う場合は、する必要がありますまずか接続を確立するリモート ホストを呼び出して、Connectメソッドか、着信リモートを呼び出して接続をホスト、Acceptメソッド。If you choose to do so, you must first either establish a remote host connection by calling the Connect method or accept an incoming remote host connection by calling the Accept method. 確立したり、接続を呼び出す前に許可しない場合、ReceiveFrom取得は、メソッド、SocketExceptionします。If you do not establish or accept a connection before calling the ReceiveFrom method, you will get a SocketException. 呼び出しの前に、コネクションレスのプロトコルの既定のリモート ホストを確立することも、ReceiveFromメソッド。You can also establish a default remote host for a connectionless protocol prior to calling the ReceiveFrom method. このような場合は、のいずれかで、ReceiveFromメソッドは無視されます、remoteEPパラメーターのみから、接続されているデータや既定のリモート ホストを受信します。In either of these cases, the ReceiveFrom method will ignore the remoteEP parameter and only receive data from the connected or default remote host.

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

注意

表示された場合、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.

注意

AddressFamilyEndPointで使用されるReceiveFromと一致する必要があります、AddressFamilyEndPointで使用されるSendToします。The AddressFamily of the EndPoint used in ReceiveFrom needs to match the AddressFamily of the EndPoint used in SendTo.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。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.

こちらもご覧ください

ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint) ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint) ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)

指定した SocketFlags を使用し、指定したバイト数のデータを受信してデータ バッファーに格納します。さらに、エンドポイントを格納します。Receives the specified number of bytes into the data buffer, using the specified SocketFlags, and stores the endpoint.

public:
 int ReceiveFrom(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : byte[] * int * System.Net.Sockets.SocketFlags *  -> int

パラメーター

buffer
Byte[]

受信したデータの格納場所である、Byte 型の配列。An array of type Byte that is the storage location for 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.

remoteEP
EndPoint EndPoint EndPoint EndPoint

リモート サーバーを表す、参照渡しされた EndPointAn EndPoint, passed by reference, that represents the remote server.

戻り値

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

例外

buffernullです。buffer is null.

- または --or- remoteEPnullです。remoteEP is null.

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

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

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.

次のコード例では、リモート ホストからコネクションレスのデータグラムを受信します。The following code example receives a connectionless datagram from a remote host. バッファー サイズ、およびSocketFlagsに渡される、ReceiveFromメソッド。The buffer size, and SocketFlags are passed to the ReceiveFrom method.

static void ReceiveFrom3()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IPEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine(  "SWaiting to receive datagrams from client..." );
   // This call blocks. 
   s->ReceiveFrom( msg, msg->Length, SocketFlags::None, senderRemote );
   s->Close();
}
public static void ReceiveFrom3()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);
  
    // Creates an IPEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    
    byte[] msg = new Byte[256];
    Console.WriteLine ("Waiting to receive datagrams from client...");
    // This call blocks. 
    s.ReceiveFrom(msg, msg.Length, SocketFlags.None, ref senderRemote);
    s.Close();
}
Public Shared Sub ReceiveFrom3() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IPEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any, 0)
    Dim senderRemote As EndPoint = CType(sender, EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    
    Dim msg() As Byte = New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    ' This call blocks. 
    s.ReceiveFrom(msg, msg.Length, SocketFlags.None, senderRemote)
    s.Close()

End Sub 'ReceiveFrom3

注釈

ReceiveFromメソッドへのデータを読み取り、bufferパラメーターが、正常に読み取られたバイト数を返し、データの送信元のリモート ホスト エンドポイントをキャプチャします。The ReceiveFrom method reads data into the buffer parameter, returns the number of bytes successfully read, and captures the remote host endpoint from which the data was sent. このメソッドは、不明なホストまたは複数のホストからコネクションレスのデータグラムを受信する場合に便利です。This method is useful if you intend to receive connectionless datagrams from an unknown host or multiple hosts.

このオーバー ロードのために必要なを受信するバイト数、受信バッファーを提供する必要のみSocketFlagsEndPointリモート ホストを表します。This overload only requires you to provide a receive buffer, the number of bytes you want to receive, the necessary SocketFlags, and an EndPoint that represents the remote host. バッファーのオフセットの既定値は 0。The buffer offset defaults to 0.

コネクションレスのプロトコル使用ReceiveFromはローカル ネットワーク バッファーに受信した最初のエンキューされたデータグラムを読み取ります。With connectionless protocols, ReceiveFrom will read the first enqueued datagram received into the local network buffer. 受信したデータグラムがのサイズより大きいかどうかbufferReceiveFromメソッドは入力buffer、メッセージをそのまま可能であれば、および throw の多くで、SocketExceptionします。If the datagram you receive is larger than the size of buffer, the ReceiveFrom method will fill buffer with as much of the message as is possible, and throw a SocketException. 信頼性の低いプロトコルを使用している場合は、余分なデータが失われます。If you are using an unreliable protocol, the excess data will be lost. 信頼性の高いプロトコルを使用している場合は、余分なデータは、サービス プロバイダーによって保持されますを呼び出して取得することができます、ReceiveFromのに十分な大きさのバッファー。If you are using a reliable protocol, the excess data will be retained by the service provider and you can retrieve it by calling the ReceiveFrom method with a large enough buffer.

読み取りについては、使用可能なデータがない場合、ReceiveFromメソッドはデータが利用可能になるまでブロックされます。If no data is available for reading, the ReceiveFrom method will block until data is available. モードの非ブロッキングであることで使用できるデータがない場合、プロトコル スタック バッファー、ReceiveFromメソッドはすぐに完了し、スロー、SocketExceptionします。If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the ReceiveFrom 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.

ReceiveFromコネクションレスのプロトコルのものはでも接続指向プロトコルを使用することができます。Although ReceiveFrom is intended for connectionless protocols, you can use a connection-oriented protocol as well. これを行う場合は、する必要がありますまずか接続を確立するリモート ホストを呼び出して、Connectメソッドか、着信リモートを呼び出して接続をホスト、Acceptメソッド。If you choose to do so, you must first either establish a remote host connection by calling the Connect method or accept an incoming remote host connection by calling the Accept method. 確立したり、接続を呼び出す前に許可しない場合、ReceiveFrom取得は、メソッド、SocketExceptionします。If you do not establish or accept a connection before calling the ReceiveFrom method, you will get a SocketException. 呼び出しの前に、コネクションレスのプロトコルの既定のリモート ホストを確立することも、ReceiveFromメソッド。You can also establish a default remote host for a connectionless protocol prior to calling the ReceiveFrom method. このような場合は、のいずれかで、ReceiveFromメソッドは無視されます、remoteEPパラメーターのみから、接続されているデータや既定のリモート ホストを受信します。In either of these cases, the ReceiveFrom method will ignore the remoteEP parameter and only receive data from the connected or default remote host.

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

注意

呼び出しの前にReceiveFrom、明示的にバインドする必要があります、Socketを使用して、ローカル エンドポイントをBindメソッド。Before calling ReceiveFrom, you must explicitly bind the Socket to a local endpoint using the Bind method. 表示されない場合、ReceiveFromがスローされます、SocketExceptionします。If you do not, ReceiveFrom will throw a SocketException. 表示された場合、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.

注意

AddressFamilyEndPointで使用されるReceiveFromと一致する必要があります、AddressFamilyEndPointで使用されるSendToします。The AddressFamily of the EndPoint used in ReceiveFrom needs to match the AddressFamily of the EndPoint used in SendTo.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。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.

こちらもご覧ください

ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint) ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint) ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)

指定した SocketFlags を使用して、指定したバイト数のデータを受信して、データ バッファー内の指定した位置に格納します。またエンドポイントを格納します。Receives the specified number of bytes of data into the specified location of the data buffer, using the specified SocketFlags, and stores the endpoint.

public:
 int ReceiveFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ % remoteEP);
public int ReceiveFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP);
member this.ReceiveFrom : 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 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.

remoteEP
EndPoint EndPoint EndPoint EndPoint

リモート サーバーを表す、参照渡しされた EndPointAn EndPoint, passed by reference, that represents the remote server.

戻り値

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

例外

buffernullです。buffer is null.

- または --or- remoteEPnullです。remoteEP is null.

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 の長さからオフセット パラメーターの値を引いた値を超えています。size is greater than the length of the 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- ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

次のコード例では、リモート ホストからコネクションレスのデータグラムを受信します。The following code example receives a connectionless datagram from a remote host. オフセット、バッファーのサイズとSocketFlagsに渡される、ReceiveFromメソッド。The offset, buffer size, and SocketFlags are passed to the ReceiveFrom method.

static void ReceiveFrom4()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );
   
   // Creates an IpEndPoint to capture the identity of the sending host.
   IPEndPoint^ sender = gcnew IPEndPoint( IPAddress::Any,0 );
   EndPoint^ senderRemote = safe_cast<EndPoint^>(sender);
   
   // Binding is required with ReceiveFrom calls.
   s->Bind( endPoint );

   array<Byte>^ msg = gcnew array<Byte>(256);
   Console::WriteLine(  "SWaiting to receive datagrams from client..." );
   // This call blocks.  
   s->ReceiveFrom( msg, 0, msg->Length, SocketFlags::None, senderRemote );
   s->Close();
}
public static void ReceiveFrom4()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);
        
    // Creates an IpEndPoint to capture the identity of the sending host.
    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
    EndPoint senderRemote = (EndPoint)sender;
    
    // Binding is required with ReceiveFrom calls.
    s.Bind(endPoint);
    byte[] msg = new Byte[256];
    Console.WriteLine ("Waiting to receive datagrams from client...");
    // This call blocks.  
    s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, ref senderRemote);
    s.Close();
}
Public Shared Sub ReceiveFrom4() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    ' Creates an IpEndPoint to capture the identity of the sending host.
    Dim sender As New IPEndPoint(IPAddress.Any, 0)
    Dim senderRemote As EndPoint = CType(sender, EndPoint)
    
    ' Binding is required with ReceiveFrom calls.
    s.Bind(endPoint)
    Dim msg() As Byte = New [Byte](255) {}
    Console.WriteLine("Waiting to receive datagrams from client...")
    ' This call blocks.  
    s.ReceiveFrom(msg, 0, msg.Length, SocketFlags.None, senderRemote)
    s.Close()

End Sub 'ReceiveFrom4

注釈

ReceiveFromメソッドへのデータを読み取り、bufferパラメーターが、正常に読み取られたバイト数を返し、データの送信元のリモート ホスト エンドポイントをキャプチャします。The ReceiveFrom method reads data into the buffer parameter, returns the number of bytes successfully read, and captures the remote host endpoint from which the data was sent. このメソッドは、不明なホストまたは複数のホストからコネクションレスのデータグラムを受信する場合に便利です。This method is useful if you intend to receive connectionless datagrams from an unknown host or multiple hosts.

コネクションレスのプロトコル使用ReceiveFromはローカル ネットワーク バッファーに受信した最初のエンキューされたデータグラムを読み取ります。With connectionless protocols, ReceiveFrom will read the first enqueued datagram received into the local network buffer. 受信したデータグラムがのサイズより大きいかどうかbufferReceiveFromメソッドは入力buffer、メッセージをそのまま可能であれば、および throw の多くで、SocketExceptionします。If the datagram you receive is larger than the size of buffer, the ReceiveFrom method will fill buffer with as much of the message as is possible, and throw a SocketException. 信頼性の低いプロトコルを使用している場合は、余分なデータが失われます。If you are using an unreliable protocol, the excess data will be lost. 信頼性の高いプロトコルを使用している場合は、余分なデータは、サービス プロバイダーによって保持されますを呼び出して取得することができます、ReceiveFromのに十分な大きさのバッファー。If you are using a reliable protocol, the excess data will be retained by the service provider and you can retrieve it by calling the ReceiveFrom method with a large enough buffer.

読み取りについては、使用可能なデータがない場合、ReceiveFromメソッドはデータが利用可能になるまでブロックされます。If no data is available for reading, the ReceiveFrom method will block until data is available. モードの非ブロッキングであることで使用できるデータがない場合、プロトコル スタック バッファー、ReceiveFromメソッドはすぐに完了し、スロー、SocketExceptionします。If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the ReceiveFrom 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.

ReceiveFromコネクションレスのプロトコルのものはでも接続指向プロトコルを使用することができます。Although ReceiveFrom is intended for connectionless protocols, you can use a connection-oriented protocol as well. これを行う場合は、する必要がありますまずか接続を確立するリモート ホストを呼び出して、Connectメソッドか、着信リモートを呼び出して接続をホスト、Acceptメソッド。If you choose to do so, you must first either establish a remote host connection by calling the Connect method or accept an incoming remote host connection by calling the Accept method. 確立したり、接続を呼び出す前に許可しない場合、ReceiveFrom取得は、メソッド、SocketExceptionします。If you do not establish or accept a connection before calling the ReceiveFrom method, you will get a SocketException. 呼び出しの前に、コネクションレスのプロトコルの既定のリモート ホストを確立することも、ReceiveFromメソッド。You can also establish a default remote host for a connectionless protocol prior to calling the ReceiveFrom method. このような場合は、のいずれかで、ReceiveFromメソッドは無視されます、remoteEPパラメーターのみから、接続されているデータや既定のリモート ホストを受信します。In either of these cases, the ReceiveFrom method will ignore the remoteEP parameter and only receive data from the connected or default remote host.

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

注意

呼び出しの前にReceiveFrom、明示的にバインドする必要があります、Socketを使用して、ローカル エンドポイントをBindメソッド。Before calling ReceiveFrom, you must explicitly bind the Socket to a local endpoint using the Bind method. 表示されない場合、ReceiveFromがスローされます、SocketExceptionします。If you do not, ReceiveFrom will throw a SocketException. 表示された場合、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.

注意

AddressFamilyEndPointで使用されるReceiveFromと一致する必要があります、AddressFamilyEndPointで使用されるSendToします。The AddressFamily of the EndPoint used in ReceiveFrom needs to match the AddressFamily of the EndPoint used in SendTo.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。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.

こちらもご覧ください

適用対象