Der Client wählt einen Zufallsport und verbindet mit dem Server und dessen festen Port. Nun steht eine Socketverbindung in der beide, also der Client und auch der Server Daten in beide Richtungen versenden können. Wenn das Chat-Kommunikations-Protokoll sauber und clever entwicklet wurde, dann kann man über diese eine Verbindung Daten senden und auch lesen in beide Richtungen.
Aus Sicht des Servers ist es egal welchen Port der Client benutzt, denn die Verbindung besteht auch ohne dieses Wissen.
Auf ServerSite müssen hauptsächlich nur die FireWalls so konfiguriert werden das sie den Server-Port zugreifbar lassen. Auf Clientsite müssen haupsächlich die Proxies, aber nicht die FireWalls berücksichtigt werden. Bei einem Chat ist es aber üblich das der Chat-Server nur die Verbindungen von einem Client zu anderen Clients ermöglicht. Dazu verwaltet der Server eine Tabelle aller angemeldeten Clients per
IP + Port. Diese Informationen werden dann benutzt damit einer der Clients sich mit anderen Clients verbinden kann.
Gruß Hagen