Erstellen Sie das Server‑Programm, binden Sie über TcpListener eine IP‑Adresse und einen Port, starten Sie die Port‑Überwachung und warten Sie auf eingehende TCP‑Verbindungen von Clients. Es stehen zwei Implementierungsvarianten zur Verfügung: Konsolenanwendung und WinForms‑Fensteranwendung.
Wichtige API‑Beschreibung
IPAddress: Repräsentiert eine lokale IP‑Adresse. MitIPAddress.Parse("127.0.0.1")wandeln Sie eine IP‑Zeichenkette in ein Objekt um.127.0.0.1: Lokale Loopback‑Adresse, nur vom eigenen Rechner erreichbar. Für Verbindungen anderer Geräte im lokalen Netzwerk verwenden Sie die LAN‑IP wie z. B.192.168.x.x;IPAddress.Any: Lauscht auf allen Netzwerkschnittstellen‑IPs des Rechners.
TcpListener: TCP‑Server‑Listener‑Klasse. Konstruktor‑Parameter:IP‑Adresse + Port‑Nummerlistener.Start(): Überwachung starten. Nach dem Aufruf wartet der Server auf Client‑Verbindungen.
Konsolen‑Version
using System;
using System.Net;
using System.Net.Sockets;
namespace TalkService
{
class Program
{
static void Main(string[] args)
{
// IP‑Objekt erzeugen
IPAddress ip = IPAddress.Parse("127.0.0.1");
// TCP‑Listener für Port 9500 erstellen
TcpListener listener = new TcpListener(ip, 9500);
// Überwachung starten
listener.Start();
Console.WriteLine("Überwachung gestartet… Drücken Sie E zum Beenden");
ConsoleKeyInfo info;
do
{
info = Console.ReadKey();
} while (info.Key != ConsoleKey.E);
listener.Stop(); // Überwachung beim Beenden stoppen
}
}
}Code-Sprache: JavaScript (javascript)
Dieser Code startet nur den Listener. AcceptTcpClient wird nicht aufgerufen, um auf Clients zu warten, der Prozess läuft lediglich weiter ohne sich zu beenden.
WinForms‑Version
Steuerelemente der Oberfläche: (Fügen Sie Ihrem WinForm‑Formular Steuerelemente hinzu, um IP, Port, Ausgabetext und weitere Einstellungen vorzunehmen)
textBoxIP: IP‑Eingabefeld (Standardwert127.0.0.1)textBoxPort: Port‑Eingabefeld (Standardwert9500)buttonStart: Start‑SchaltflächetextBoxInfo: Textfeld für Status‑Ausgaben
using System;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;
namespace SocketChatServer
{
public partial class Form1 : Form
{
IPAddress ip;
TcpListener listener;
public Form1()
{
InitializeComponent();
}
private void buttonStart_Click(object sender, EventArgs e)
{
// IP und Port einlesen
ip = IPAddress.Parse(this.textBoxIP.Text);
int port = Convert.ToInt32(this.textBoxPort.Text);
listener = new TcpListener(ip, port);
// Überwachung aktivieren
listener.Start();
// Log‑Ausgabe
string log = $"Server gestartet {DateTime.Now.ToShortTimeString()}\r\n";
this.textBoxInfo.Text = log + this.textBoxInfo.Text;
}
}
}Code-Sprache: PHP (php)
Offene Punkte
- UI‑Einfrier‑Problem
listener.AcceptTcpClient()ist eine blockierende Methode. Ein direkter Aufruf im Haupt‑UI‑Thread bei Button‑Klick lässt das Fenster einfrieren. Nutzen Sie einen separaten Thread oderasync/awaitzum asynchronen Warten auf eingehende Verbindungen. - Port‑Belegung
Wird Port 9500 von einem anderen Programm verwendet, löstnew TcpListener()eine Ausnahme aus. Ergänzen Sie während der Entwicklung einen try‑catch‑Block zur Fehlerbehandlung. - Verbindungen zwischen unterschiedlichen Hosts
Die Bindung an127.0.0.1funktioniert nur für lokale Tests. Für Verbindungen aus dem LAN verwenden Sie die lokale Netzwerk‑IP des Rechners und geben Port 9500 in der Firewall frei.
Server‑seitige Port‑Überwachung