UdpClient.Receive(IPEndPoint) Methode

Definitie

Hiermee wordt een UDP-gegevensgram geretourneerd dat is verzonden door een externe host.

public:
 cli::array <System::Byte> ^ Receive(System::Net::IPEndPoint ^ % remoteEP);
public byte[] Receive(ref System.Net.IPEndPoint remoteEP);
member this.Receive : IPEndPoint -> byte[]
Public Function Receive (ByRef remoteEP As IPEndPoint) As Byte()

Parameters

remoteEP
IPEndPoint

Een IPEndPoint die de externe host vertegenwoordigt van waaruit de gegevens zijn verzonden.

Retouren

Byte[]

Een matrix van het type Byte dat datagramgegevens bevat.

Uitzonderingen

De onderliggende Socket waarde is gesloten.

Er is een fout opgetreden bij het openen van de socket.

Voorbeelden

In het volgende voorbeeld ziet u de Receive methode. De Receive methode blokkeert de uitvoering totdat er een bericht wordt ontvangen. Als u de IPEndPoint doorgegeven Receivehost gebruikt, wordt de identiteit van de reagerende host onthuld.

 //Creates a UdpClient for reading incoming data.
 UdpClient receivingUdpClient = new UdpClient(11000);

 //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());
 }
   'Creates a UdpClient for reading incoming data.
   Dim receivingUdpClient As New UdpClient(11000)
   
   '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

Opmerkingen

De Receive methode wordt geblokkeerd totdat een datagram vanaf een externe host aankomt. Wanneer er gegevens beschikbaar zijn, leest de Receive methode het eerste enqueued datagram en retourneert het gegevensgedeelte als een bytematrix. Met deze methode wordt de remoteEP parameter gevuld met het IPAddress poortnummer van de afzender.

Als u een standaard externe host in de Connect methode opgeeft, accepteert de Receive methode alleen datagrammen van die host. Alle andere datagrammen worden verwijderd.

Als u een SocketException, gebruikt SocketException.ErrorCode om de specifieke foutcode te verkrijgen. Zodra u deze code hebt verkregen, kunt u de Windows Sockets versie 2 API-foutcode raadplegen voor een gedetailleerde beschrijving van de fout.

Note

Als u multicasted datagrammen wilt ontvangen, roept u de Connect methode niet aan voordat u de Receive methode aanroept. U UdpClient gebruikt om gegevensgrammen te ontvangen, moet worden gemaakt met behulp van het multicastpoortnummer.

Van toepassing op

Zie ook