UdpClient.Receive(IPEndPoint) Метод

Определение

Возвращает диаграмму данных UDP, отправленную удаленным узлом.

public:
 cli::array <System::Byte> ^ Receive(System::Net::IPEndPoint ^ % remoteEP);
public byte[] Receive(ref 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()

Параметры

remoteEP
IPEndPoint

Объект, IPEndPoint представляющий удаленный узел, из которого были отправлены данные.

Возвращаемое значение

Byte[]

Массив типа Byte , содержащий данные диаграммы данных.

Исключения

Базовый Socket объект был закрыт.

При доступе к сокету произошла ошибка.

Примеры

В следующем примере демонстрируется Receive метод. Метод Receive блокирует выполнение, пока не получит сообщение. IPEndPoint С помощью переданного Receiveузла отображается удостоверение узла ответа.

 //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

Комментарии

Метод Receive блокируется до тех пор, пока не будет получена диаграмма данных из удаленного узла. Когда данные доступны, Receive метод считывает первую заквеченную диаграмму данных и возвращает часть данных в виде массива байтов. Этот метод заполняет remoteEP параметр номером IPAddress и номером порта отправителя.

Если в Connect методе указан удаленный узел по умолчанию, Receive метод принимает только граммы данных из этого узла. Все остальные диаграммы данных будут удалены.

Если вы получаете SocketExceptionкод ошибки, используйте SocketException.ErrorCode для получения определенного кода ошибки. Получив этот код, вы можете обратиться к документации по коду ошибки API для сокетов Windows версии 2 для подробного описания ошибки.

Note

Если вы планируете получать многоадресные диаграммы данных, не вызывайте метод перед вызовом ConnectReceive метода. Для UdpClient получения диаграмм данных необходимо создать с помощью номера порта многоадресной рассылки.

Применяется к

См. также раздел