Server‑seitige Port‑Überwachung

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

  1. IPAddress: Repräsentiert eine lokale IP‑Adresse. Mit IPAddress.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.
  2. TcpListener: TCP‑Server‑Listener‑Klasse. Konstruktor‑Parameter: IP‑Adresse + Port‑Nummer
  3. listener.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 (Standardwert 127.0.0.1)
  • textBoxPort: Port‑Eingabefeld (Standardwert 9500)
  • buttonStart: Start‑Schaltfläche
  • textBoxInfo: 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

  1. 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 oder async/await zum asynchronen Warten auf eingehende Verbindungen.
  2. Port‑Belegung
    Wird Port 9500 von einem anderen Programm verwendet, löst new TcpListener() eine Ausnahme aus. Ergänzen Sie während der Entwicklung einen try‑catch‑Block zur Fehlerbehandlung.
  3. Verbindungen zwischen unterschiedlichen Hosts
    Die Bindung an 127.0.0.1 funktioniert 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

Previous:
Next:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert