UdpClient-Klasse
Stellt UDP-Netzwerkdienste (User Datagram Protocol) bereit.
Namespace: System.Net.Sockets
Assembly: System (in system.dll)
Syntax
'Declaration
Public Class UdpClient
Implements IDisposable
'Usage
Dim instance As UdpClient
public class UdpClient : IDisposable
public ref class UdpClient : IDisposable
public class UdpClient implements IDisposable
public class UdpClient implements IDisposable
Hinweise
Die UdpClient-Klasse stellt einfache Methoden zum Senden und Empfangen verbindungsloser UDP-Datagramme im synchronen Blockiermodus bereit. Da UDP ein verbindungsloses Übertragungsprotokoll ist, müssen Sie vor dem Senden und Empfangen von Daten keine Remotehostverbindung aufbauen. Sie können jedoch einen Standardremotehost mit einer der beiden folgenden Methoden einrichten:
Erstellt eine Instanz der UdpClient-Klasse mit dem Remotehostnamen und der Anschlussnummer als Parameter.
Erstellt eine Instanz der UdpClient-Klasse und ruft anschließend die Connect-Methode auf.
Daten können mit allen im UdpClient bereitgestellten Sendemethoden an Remotegeräte gesendet werden. Mit der Receive-Methode können Sie Daten von Remotehosts empfangen.
Hinweis
Rufen Sie Send nicht mit einem Hostnamen oder mit IPEndPoint auf, wenn Sie bereits einen Standardremotehost angegeben haben. Ansonsten würde UdpClient eine Ausnahme auslösen.
Mit UdpClient-Methoden können Sie auch Multicastdatagramme senden und empfangen. Abonnieren Sie mithilfe der JoinMulticastGroup-Methode eine Multicastgruppe für einen UdpClient. Heben Sie mithilfe der DropMulticastGroup-Methode das Abonnement einer Multicastgruppe für einen UdpClient auf.
Beispiel
Im folgenden Beispiel wird eine UdpClient-Verbindung unter Angabe des Hostnamens www.contoso.com mit dem Anschluss 11000 hergestellt. Eine kleine Zeichenfolgennachricht wird an zwei separate Remotehostcomputer gesendet. Die Receive-Methode blockiert die Ausführung, bis eine Meldung empfangen wird. Die Identität des antwortenden Hosts wird mithilfe des an Receive übergebenen IPEndPoint erkennbar.
' 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
// 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());
}
// 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();
try {
udpClient.Connect("www.contoso.com", 11000);
// Sends a message to the host to which you have connected.
ubyte sendBytes[] =
Encoding.get_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.
ubyte receiveBytes[] = udpClient.Receive(remoteIpEndPoint);
String returnData = Encoding.get_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.get_Address().ToString()
+ " on their port number "
+ System.Convert.ToString(remoteIpEndPoint.get_Port())));
udpClient.Close();
udpClientB.Close();
}
catch (System.Exception e) {
Console.WriteLine(e.ToString());
}
.NET Framework-Sicherheit
- SocketPermission mit der ausgehende Verbindungen hergestellt oder eingehende Anforderungen angenommen werden können.
Vererbungshierarchie
System.Object
System.Net.Sockets.UdpClient
Threadsicherheit
Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
UdpClient-Member
System.Net.Sockets-Namespace
TcpClient-Klasse