TcpListener-Klasse
Assembly: System (in system.dll)
Die TcpListener-Klasse stellt einfache Methoden für die Überwachung und Annahme von eingehenden Verbindungsanforderungen im synchronen Blockiermodus bereit. Sie können zum Verbinden mit einem TcpListener entweder einen TcpClient oder einen Socket verwenden. Erstellen Sie einen TcpListener mit einem IPEndPoint, einer lokalen IP-Adresse und Anschlussnummer oder nur mit einer Anschlussnummer. Geben Sie als lokale IP-Adresse Any und 0 als lokale Anschlussnummer an, wenn der zugrunde liegende Dienstanbieter diese Werte zuweisen soll. In diesem Fall können Sie später mit der LocalEndpoint-Eigenschaft die zugewiesenen Informationen identifizieren.
Mit der Start-Methode können Sie mit der Überwachung der eingehenden Verbindungsanforderungen beginnen. Start verweist eingehende Verbindungen in die Warteschlange, bis Sie entweder die Stop-Methode aufrufen oder MaxConnections von Verbindungen erreicht wurde. Sie können entweder mit AcceptSocket oder mit AcceptTcpClient eine Verbindung aus der Warteschlange der eingehenden Verbindungsanforderungen abrufen. Beide Methoden blockieren. Wenn Sie das Blockieren vermeiden möchten, können Sie zuerst mit der Pending-Methode bestimmen, ob sich Verbindungsanforderungen in der Warteschlange befinden.
Rufen Sie die Stop-Methode auf, um den TcpListener zu schließen.
Hinweis |
|---|
| Die Stop-Methode schließt keine angenommenen Verbindungen. Diese müssen von Ihnen eigens geschlossen werden. |
Im folgenden Codebeispiel wird ein TcpListener erstellt.
using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Text; class MyTcpListener { public static void Main() { TcpListener server=null; try { // Set the TcpListener on port 13000. Int32 port = 13000; IPAddress localAddr = IPAddress.Parse("127.0.0.1"); // TcpListener server = new TcpListener(port); server = new TcpListener(localAddr, port); // Start listening for client requests. server.Start(); // Buffer for reading data Byte[] bytes = new Byte[256]; String data = null; // Enter the listening loop. while(true) { Console.Write("Waiting for a connection... "); // Perform a blocking call to accept requests. // You could also user server.AcceptSocket() here. TcpClient client = server.AcceptTcpClient(); Console.WriteLine("Connected!"); data = null; // Get a stream object for reading and writing NetworkStream stream = client.GetStream(); int i; // Loop to receive all the data sent by the client. while((i = stream.Read(bytes, 0, bytes.Length))!=0) { // Translate data bytes to a ASCII string. data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); Console.WriteLine("Received: {0}", data); // Process the data sent by the client. data = data.ToUpper(); byte[] msg = System.Text.Encoding.ASCII.GetBytes(data); // Send back a response. stream.Write(msg, 0, msg.Length); Console.WriteLine("Sent: {0}", data); } // Shutdown and end connection client.Close(); } } catch(SocketException e) { Console.WriteLine("SocketException: {0}", e); } finally { // Stop listening for new clients. server.Stop(); } Console.WriteLine("\nHit enter to continue..."); Console.Read(); } }
Ein Beispiel für Clients finden Sie unter TcpClient.
- SocketPermission mit der ausgehende Verbindungen hergestellt oder eingehende Anforderungen angenommen werden können.
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.
Hinweis