Поделиться через


UdpClient Класс

Определение

Предоставляет сетевые службы по протоколу UDP (User Datagram Protocol).

public ref class UdpClient : IDisposable
public class UdpClient : IDisposable
type UdpClient = class
    interface IDisposable
Public Class UdpClient
Implements IDisposable
Наследование
UdpClient
Реализации

Примеры

В следующем примере устанавливается UdpClient подключение с использованием имени www.contoso.com узла на порту 11000. Небольшое строковое сообщение отправляется на два отдельных компьютера удаленных узлов. Метод Receive блокирует выполнение до получения сообщения. С помощью переданного IPEndPoint в Receiveотображается удостоверение отвечающего узла.

// With this constructor the local port number is arbitrarily assigned.
UdpClient^ udpClient = gcnew UdpClient;
try
{
   udpClient->Connect( "host.contoso.com", 11000 );

   // Send message to the host to which you have connected.
   array<Byte>^sendBytes = Encoding::ASCII->GetBytes( "Is anybody there?" );
   udpClient->Send( sendBytes, sendBytes->Length );

   // Send message to a different host using optional hostname and port parameters.
   UdpClient^ udpClientB = gcnew UdpClient;
   udpClientB->Send( sendBytes, sendBytes->Length, "AlternateHostMachineName", 11000 );

   //IPEndPoint object will allow us to read datagrams sent from any source.
   IPEndPoint^ RemoteIpEndPoint = gcnew IPEndPoint( IPAddress::Any,0 );

   // Block until a message returns on this socket from a remote host.
   array<Byte>^receiveBytes = udpClient->Receive( RemoteIpEndPoint );
   String^ returnData = Encoding::ASCII->GetString( receiveBytes );

   // Use the IPEndPoint object to determine which of these two hosts responded.
   Console::WriteLine( String::Concat( "This is the message you received ", returnData->ToString() ) );
   Console::WriteLine( String::Concat( "This message was sent from ", RemoteIpEndPoint->Address->ToString(), " on their port number ", RemoteIpEndPoint->Port.ToString() ) );
   udpClient->Close();
   udpClientB->Close();
}
catch ( Exception^ e ) 
{
   Console::WriteLine( e->ToString() );
}
// This constructor arbitrarily assigns the local port number.
UdpClient udpClient = new UdpClient(11000);
    try{
         udpClient.Connect("www.contoso.com", 11000);

         // Sends a message to the host to which you have connected.
         Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there?");

         udpClient.Send(sendBytes, sendBytes.Length);

         // Sends a message to a different host using optional hostname and port parameters.
         UdpClient udpClientB = new UdpClient();
         udpClientB.Send(sendBytes, sendBytes.Length, "AlternateHostMachineName", 11000);

         //IPEndPoint object will allow us to read datagrams sent from any source.
         IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);

         // Blocks until a message returns on this socket from a remote host.
         Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
         string returnData = Encoding.ASCII.GetString(receiveBytes);

         // Uses the IPEndPoint object to determine which of these two hosts responded.
         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());

          udpClient.Close();
          udpClientB.Close();
          }
       catch (Exception e ) {
                  Console.WriteLine(e.ToString());
        }
     ' This constructor arbitrarily assigns the local port number.
     Dim udpClient As New UdpClient(11000)
     Try
        udpClient.Connect("www.contoso.com", 11000)
        
        ' Sends a message to the host to which you have connected.
        Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("Is anybody there?")
        
        udpClient.Send(sendBytes, sendBytes.Length)
        
        ' Sends message to a different host using optional hostname and port parameters.
        Dim udpClientB As New UdpClient()
        udpClientB.Send(sendBytes, sendBytes.Length, "AlternateHostMachineName", 11000)
        
        ' IPEndPoint object will allow us to read datagrams sent from any source.
        Dim RemoteIpEndPoint As New IPEndPoint(IPAddress.Any, 0)
        
        ' UdpClient.Receive blocks until a message is received from a remote host.
        Dim receiveBytes As [Byte]() = udpClient.Receive(RemoteIpEndPoint)
        Dim returnData As String = Encoding.ASCII.GetString(receiveBytes)
        
        ' Which one of these two hosts responded?
        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()))
        udpClient.Close()
        udpClientB.Close()

     Catch e As Exception
        Console.WriteLine(e.ToString())
     End Try
  End Sub

Комментарии

Класс предоставляет простые UdpClient методы для отправки и получения датаграмм UDP без подключения в блокирующем синхронном режиме. Так как UDP является протоколом транспорта без подключения, вам не нужно устанавливать подключение к удаленному узлу перед отправкой и получением данных. Однако вы можете установить удаленный узел по умолчанию одним из следующих двух способов:

  • Create экземпляр класса , используя имя удаленного UdpClient узла и номер порта в качестве параметров.

  • Create экземпляр UdpClient класса , а затем вызовите Connect метод .

Вы можете использовать любой из методов отправки, указанных в , для отправки UdpClient данных на удаленное устройство. Receive Используйте метод для получения данных от удаленных узлов.

Примечание

Не вызывайте Send , используя имя узла или IPEndPoint если вы уже указали удаленный узел по умолчанию. В этом случае UdpClient вызовет исключение.

UdpClient Методы также позволяют отправлять и получать многоадресные датаграммы. Используйте метод для JoinMulticastGroup подписки UdpClient на группу многоадресной рассылки. Используйте метод , DropMulticastGroup чтобы отменить подписку UdpClient на группу многоадресной рассылки.

Конструкторы

UdpClient()

Инициализирует новый экземпляр класса UdpClient.

UdpClient(AddressFamily)

Инициализирует новый экземпляр класса UdpClient.

UdpClient(Int32)

Инициализирует новый экземпляр класса UdpClient и связывает его с заданным номером локального порта.

UdpClient(Int32, AddressFamily)

Инициализирует новый экземпляр класса UdpClient и связывает его с заданным номером локального порта.

UdpClient(IPEndPoint)

Инициализирует новый экземпляр класса UdpClient и связывает его с заданной локальной конечной точкой.

UdpClient(String, Int32)

Инициализирует новый экземпляр класса UdpClient и устанавливает удаленный узел, используемый по умолчанию.

Свойства

Active

Получает или задает значение, указывающее, установлен ли удаленный узел, используемый по умолчанию.

Available

Возвращает значение, указывающее количество полученных из сети и доступных для чтения данных.

Client

Получает или задает основной сетевой объект Socket.

DontFragment

Возвращает или задает значение Boolean, указывающее, разрешает ли объект UdpClient выполнение фрагментации датаграмм протокола IP.

EnableBroadcast

Возвращает или задает Boolean значение, указывающее, может ли объект UdpClient отправлять широковещательные пакеты.

ExclusiveAddressUse

Возвращает или задает значение Boolean, указывающее, разрешает ли объект UdpClient использовать порт только одному клиенту.

MulticastLoopback

Получает или задает значение Boolean, указывающее, могут ли доставляться исходящие пакеты многоадресной рассылки в передающем приложении.

Ttl

Получает или задает значение, указывающее время существования TTL (Time To Live) для IP-пакетов, отправленных объектом UdpClient.

Методы

AllowNatTraversal(Boolean)

Включает или отключает обход механизма преобразования сетевых адресов (NAT) для экземпляра UdpClient.

BeginReceive(AsyncCallback, Object)

Принимает датаграмму с удаленного узла в асинхронном режиме.

BeginSend(Byte[], Int32, AsyncCallback, Object)

Отправляет датаграмму на удаленный узел в асинхронном режиме. Пункт назначения был задан заранее путем обращения к объекту Connect.

BeginSend(Byte[], Int32, IPEndPoint, AsyncCallback, Object)

Отправляет датаграмму в пункт назначения в асинхронном режиме. Пункт назначения задается объектом EndPoint.

BeginSend(Byte[], Int32, String, Int32, AsyncCallback, Object)

Отправляет датаграмму в пункт назначения в асинхронном режиме. Пункт назначения задается именем узла и номером порта.

Close()

Закрывает UDP-подключение.

Connect(IPAddress, Int32)

Устанавливает удаленный узел по умолчанию, используя заданный IP-адрес и номер порта.

Connect(IPEndPoint)

Устанавливает удаленный узел по умолчанию, используя заданную сетевую конечную точку.

Connect(String, Int32)

Устанавливает удаленный узел по умолчанию, используя заданное имя узла и номер порта.

Dispose()

Освобождает все управляемые и неуправляемые ресурсы, используемые UdpClient.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом UdpClient, а при необходимости освобождает также управляемые ресурсы.

DropMulticastGroup(IPAddress)

Покидает группу многоадресной рассылки.

DropMulticastGroup(IPAddress, Int32)

Покидает группу многоадресной рассылки.

EndReceive(IAsyncResult, IPEndPoint)

Завершает отложенный асинхронный прием.

EndSend(IAsyncResult)

Завершает отложенную операцию асинхронной передачи.

Equals(Object)

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

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
JoinMulticastGroup(Int32, IPAddress)

Добавляет объект UdpClient в группу многоадресной рассылки.

JoinMulticastGroup(IPAddress)

Добавляет объект UdpClient в группу многоадресной рассылки.

JoinMulticastGroup(IPAddress, Int32)

Добавьте в группу многоадресной рассылки объект UdpClient с заданным параметром времени существования TTL (Time to Live).

JoinMulticastGroup(IPAddress, IPAddress)

Добавляет объект UdpClient в группу многоадресной рассылки.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
Receive(IPEndPoint)

Возвращает UDP-датаграмму, которая была послана на удаленный узел.

ReceiveAsync()

Асинхронно возвращает UDP-датаграмму, которая была послана на удаленный узел.

ReceiveAsync(CancellationToken)

Асинхронно возвращает UDP-датаграмму, которая была послана на удаленный узел.

Send(Byte[], Int32)

Отправляет датаграмму UDP в удаленный узел.

Send(Byte[], Int32, IPEndPoint)

Отправляет UDP-датаграмму в узел в указанной удаленной конечной точке.

Send(Byte[], Int32, String, Int32)

Отправляет UDP-датаграмму на заданный порт указанного удаленного узла.

Send(ReadOnlySpan<Byte>)

Отправляет датаграмму UDP в удаленный узел.

Send(ReadOnlySpan<Byte>, IPEndPoint)

Отправляет UDP-датаграмму в узел в указанной удаленной конечной точке.

Send(ReadOnlySpan<Byte>, String, Int32)

Отправляет UDP-датаграмму на заданный порт указанного удаленного узла.

SendAsync(Byte[], Int32)

Асинхронно отправляет датаграмму UPD на удаленный узел.

SendAsync(Byte[], Int32, IPEndPoint)

Асинхронно отправляет датаграмму UPD на удаленный узел.

SendAsync(Byte[], Int32, String, Int32)

Асинхронно отправляет датаграмму UPD на удаленный узел.

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

Асинхронно отправляет датаграмму UPD на удаленный узел.

SendAsync(ReadOnlyMemory<Byte>, IPEndPoint, CancellationToken)

Асинхронно отправляет датаграмму UPD на удаленный узел.

SendAsync(ReadOnlyMemory<Byte>, String, Int32, CancellationToken)

Асинхронно отправляет датаграмму UPD на удаленный узел.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

IDisposable.Dispose()

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Освобождает все ресурсы, занятые модулем UdpClient.

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

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