次の方法で共有


UdpClient.Receive メソッド

リモート ホストが送信した UDP データグラムを返します。

Public Function Receive( _
   ByRef remoteEP As IPEndPoint _) As Byte()
[C#]
public byte[] Receive(   ref IPEndPointremoteEP);
[C++]
public: unsigned char Receive(   IPEndPoint** remoteEP)  __gc[];
[JScript]
public function Receive(
   remoteEP : IPEndPoint) : Byte[];

パラメータ

  • remoteEP
    データの送信元のリモート ホストを表す IPEndPoint

戻り値

データグラム データを格納する Byte 型の配列

例外

例外の種類 条件
ObjectDisposedException 基になる Socket は閉じられています。
SocketException ソケットへのアクセス中にエラーが発生しました。詳細については、「解説」を参照してください。

解説

Receive メソッドは、リモート ホストからデータグラムが到達するまでブロックします。データが使用可能な場合、 Receive メソッドは、最初にキューに格納されたデータグラムを読み取ってデータ部分をバイト配列として返します。このメソッドは、 remoteEP パラメータに送信側の IPAddress とポート番号を読み込みます。

Connect メソッドで既定のリモート ホストを指定すると、 Receive メソッドはホストからのデータグラムだけを受信します。他のデータグラムはすべて破棄されます。

受信するデータグラムのサイズが buffer パラメータのサイズより大きい場合、 buffer にはメッセージの最初の部分が格納され、 Receive メソッドは SocketException をスローします。残りのデータは破棄されます。 SocketException が発生した場合は、 SocketException.ErrorCode を使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのマニュアルから、エラーの詳細情報を確認できます。これは MSDN から入手できます。

メモ   マルチキャスト データグラムを受信する場合は、 Receive メソッドの前に Connect メソッドを呼び出さないでください。データグラムの受信に使用する UdpClient は、マルチキャスト ポート番号を使用して作成する必要があります。

使用例

[Visual Basic, C#, C++] Receive メソッドの例を次に示します。 Receive メソッドはメッセージを受信するまで実行をブロックします。 Receive に渡された IPEndPoint を使用して、応答するホストの ID が明らかになります。

 
'Creates a UdpClient for reading incoming data.
Dim receivingUdpClient As New UdpClient()

'Creates an IPEndPoint to record the IP address and port number of the sender. 
' The IPEndPoint will allow you to read datagrams sent from any source.
Dim RemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0)
Try
   
   ' Blocks until a message returns on this socket from a remote host.
   Dim receiveBytes As [Byte]() = receivingUdpClient.Receive(RemoteIpEndPoint)
   
   Dim returnData As String = Encoding.ASCII.GetString(receiveBytes)
   
   Console.WriteLine(("This is the message you received " + returnData.ToString()))
   Console.WriteLine(("This message was sent from " + RemoteIpEndPoint.Address.ToString() + " on their port number " + RemoteIpEndPoint.Port.ToString()))
Catch e As Exception
   Console.WriteLine(e.ToString())
End Try
   End Sub 'MyUdpClientCommunicator
    

[C#] 
//Creates a UdpClient for reading incoming data.
UdpClient receivingUdpClient = new UdpClient();

//Creates an IPEndPoint to record the IP Address and port number of the sender. 
  // The IPEndPoint will allow you to read datagrams sent from any source.
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
try{

    // Blocks until a message returns on this socket from a remote host.
    Byte[] receiveBytes = receivingUdpClient.Receive(ref RemoteIpEndPoint); 

    string returnData = Encoding.ASCII.GetString(receiveBytes);

    Console.WriteLine("This is the message you received " +
                                 returnData.ToString());
    Console.WriteLine("This message was sent from " +
                                RemoteIpEndPoint.Address.ToString() +
                                " on their port number " +
                                RemoteIpEndPoint.Port.ToString());
}
catch ( Exception e ){
    Console.WriteLine(e.ToString()); 
}


[C++] 
//Creates a UdpClient for reading incoming data.
UdpClient* receivingUdpClient = new UdpClient();

//Creates an IPEndPoint to record the IP Address and port number of the sender. 
  // The IPEndPoint will allow you to read datagrams sent from any source.
IPEndPoint* RemoteIpEndPoint = new IPEndPoint(IPAddress::Any, 0);
try{

    // Blocks until a message returns on this socket from a remote host.
    Byte receiveBytes[] = receivingUdpClient->Receive(&RemoteIpEndPoint); 

    String* returnData = Encoding::ASCII->GetString(receiveBytes);

    Console::WriteLine(S"This is the message you received {0}", returnData);
    Console::WriteLine(S"This message was sent from {0} on their port number {1}", RemoteIpEndPoint->Address, __box(RemoteIpEndPoint->Port));
}
catch ( Exception* e ){
    Console::WriteLine(e->ToString()); 
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

参照

UdpClient クラス | UdpClient メンバ | System.Net.Sockets 名前空間 | Send | IPEndPoint | Connect | IPAddress