Condividi tramite


UdpClient Classe

Definizione

Fornisce servizi di rete UDP (User Datagram Protocol).

public ref class UdpClient : IDisposable
public class UdpClient : IDisposable
type UdpClient = class
    interface IDisposable
Public Class UdpClient
Implements IDisposable
Ereditarietà
UdpClient
Implementazioni

Esempio

Nell'esempio seguente viene stabilita una UdpClient connessione usando il nome www.contoso.com host sulla porta 11000. Un piccolo messaggio stringa viene inviato a due computer host remoti separati. Il Receive metodo blocca l'esecuzione fino a quando non viene ricevuto un messaggio. Usando l'oggetto IPEndPoint passato a Receive, viene rilevata l'identità dell'host che risponde.

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

Commenti

La UdpClient classe fornisce metodi semplici per l'invio e la ricezione di datagrammi UDP senza connessione in modalità sincrona. Poiché UDP è un protocollo di trasporto senza connessione, non è necessario stabilire una connessione host remota prima di inviare e ricevere dati. È tuttavia possibile stabilire un host remoto predefinito in uno dei due modi seguenti:

  • Create un'istanza della UdpClient classe usando il nome host remoto e il numero di porta come parametri.

  • Create un'istanza della UdpClient classe e quindi chiamare il Connect metodo .

È possibile usare uno dei metodi di invio forniti in UdpClient per inviare dati a un dispositivo remoto. Usare il Receive metodo per ricevere dati da host remoti.

Nota

Non chiamare Send usando un nome host o IPEndPoint se è già stato specificato un host remoto predefinito. In tal caso, UdpClient genererà un'eccezione.

UdpClient i metodi consentono anche di inviare e ricevere datagrammi multicast. Usare il JoinMulticastGroup metodo per sottoscrivere un UdpClient gruppo multicast. Usare il metodo per annullare la DropMulticastGroupUdpClient sottoscrizione a un gruppo multicast.

Costruttori

UdpClient()

Inizializza una nuova istanza della classe UdpClient.

UdpClient(AddressFamily)

Inizializza una nuova istanza della classe UdpClient.

UdpClient(Int32)

Inizializza una nuova istanza della classe UdpClient e la associa al numero di porta locale fornito.

UdpClient(Int32, AddressFamily)

Inizializza una nuova istanza della classe UdpClient e la associa al numero di porta locale fornito.

UdpClient(IPEndPoint)

Inizializza una nuova istanza della classe UdpClient e la associa all'endpoint locale specificato.

UdpClient(String, Int32)

Inizializza una nuova istanza della classe UdpClient e stabilisce un host remoto predefinito.

Proprietà

Active

Ottiene o imposta un valore che indica se è stato stabilito un host remoto predefinito.

Available

Ottiene la quantità di dati ricevuti dalla rete disponibili per essere letti.

Client

Ottiene o imposta l'oggetto Socket di rete sottostante.

DontFragment

Ottiene o imposta un valore Boolean che specifica se il UdpClient consente la frammentazione dei datagrammi IP (Internet Protocol).

EnableBroadcast

Ottiene o imposta un Boolean valore che specifica se l'oggetto UdpClient può inviare pacchetti broadcast.

ExclusiveAddressUse

Ottiene o imposta un valore Boolean che specifica se la classe UdpClient consente a un unico client di utilizzare una porta.

MulticastLoopback

Ottiene o imposta un valore Boolean che specifica se i pacchetti multicast in uscita devono essere recapitati all'applicazione mittente.

Ttl

Ottiene o imposta un valore che specifica la durata (TTL) dei pacchetti IP inviati dall'oggetto UdpClient.

Metodi

AllowNatTraversal(Boolean)

Abilita o disabilita l'attraversamento NAT (Network Address Translation) in un'istanza di UdpClient.

BeginReceive(AsyncCallback, Object)

Riceve un datagramma da un host remoto in modalità asincrona.

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

Invia un datagramma a un host remoto in modalità asincrona. La destinazione è stata specificata precedentemente da una chiamata al metodo Connect.

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

Invia un datagramma a una destinazione in modalità asincrona. La destinazione è specificata da una classe EndPoint.

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

Invia un datagramma a una destinazione in modalità asincrona. La destinazione è specificata mediante il nome dell'host e il numero di porta.

Close()

Chiude la connessione UDP.

Connect(IPAddress, Int32)

Stabilisce un host remoto predefinito utilizzando l'indirizzo IP e il numero di porta specificati.

Connect(IPEndPoint)

Stabilisce un host remoto predefinito utilizzando l'endpoint di rete specificato.

Connect(String, Int32)

Stabilisce un host remoto predefinito utilizzando il nome host e il numero di porta specificati.

Dispose()

Rilascia le risorse gestite e non gestite usate dall'oggetto UdpClient.

Dispose(Boolean)

Rilascia le risorse non gestite usate da UdpClient e, facoltativamente, le risorse gestite.

DropMulticastGroup(IPAddress)

Esce da un gruppo multicast.

DropMulticastGroup(IPAddress, Int32)

Esce da un gruppo multicast.

EndReceive(IAsyncResult, IPEndPoint)

Termina una ricezione asincrona in attesa.

EndSend(IAsyncResult)

Termina un invio asincrono in attesa.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
JoinMulticastGroup(Int32, IPAddress)

Aggiunge una classe UdpClient a un gruppo multicast.

JoinMulticastGroup(IPAddress)

Aggiunge una classe UdpClient a un gruppo multicast.

JoinMulticastGroup(IPAddress, Int32)

Aggiunge una classe UdpClient a un gruppo multicast con il Time to Live (TTL) specificato.

JoinMulticastGroup(IPAddress, IPAddress)

Aggiunge una classe UdpClient a un gruppo multicast.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Receive(IPEndPoint)

Restituisce un datagramma UDP che era stato inviato da un host remoto.

ReceiveAsync()

Restituisce in modo asincrono un datagramma UDP inviato da un host remoto.

ReceiveAsync(CancellationToken)

Restituisce in modo asincrono un datagramma UDP inviato da un host remoto.

Send(Byte[], Int32)

Invia un datagramma UDP a un host remoto.

Send(Byte[], Int32, IPEndPoint)

Invia un datagramma UDP all'host all'endpoint remoto specificato.

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

Invia un datagramma UDP a una porta specificata in un host remoto specificato.

Send(ReadOnlySpan<Byte>)

Invia un datagramma UDP a un host remoto.

Send(ReadOnlySpan<Byte>, IPEndPoint)

Invia un datagramma UDP all'host all'endpoint remoto specificato.

Send(ReadOnlySpan<Byte>, String, Int32)

Invia un datagramma UDP a una porta specificata in un host remoto specificato.

SendAsync(Byte[], Int32)

Invia un datagramma UDP in modo asincrono a un host remoto.

SendAsync(Byte[], Int32, IPEndPoint)

Invia un datagramma UDP in modo asincrono a un host remoto.

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

Invia un datagramma UDP in modo asincrono a un host remoto.

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

Invia un datagramma UDP in modo asincrono a un host remoto.

SendAsync(ReadOnlyMemory<Byte>, IPEndPoint, CancellationToken)

Invia un datagramma UDP in modo asincrono a un host remoto.

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

Invia un datagramma UDP in modo asincrono a un host remoto.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IDisposable.Dispose()

Questa API supporta l'infrastruttura del prodotto e non è previsto che venga usata direttamente dal codice.

Rilascia tutte le risorse usate da UdpClient.

Si applica a

Vedi anche