Einzelnen Beitrag anzeigen

TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.825 Beiträge
 
Delphi 12 Athens
 
#4

AW: TServerSocket und TClientSocket in Delphi 10.3.3 Community Edition (FMX)

  Alt 26. Nov 2020, 17:13
Hallo,

wenn du's über einen Server machst, wird kein Port Forwarding im Router benötigt.
Auf dem Server sitzt einfach deine Chat Server Software. Die besitzt z.B. ein
TCP Server Socket und hört auf Port 6666.

Verbindet sich ein Client, so erzeugt der Server (Details siehe z.B. ICS Komponenten,
Open Source Netzwerkkomponenten mit eigenem Unterforum auf der EN Delphipraxis.net
Seite, vielen Demos und per GetIt installierbar, geth aber nur für Windows oder Linux,
nicht Android/iOS) erzeugt dieser für die Verbindung einen eigenen TCP SOcket auf
den diese dann über geht. Dadurch wird Port 6666 für den nächsten verbindungswilligen
wieder frei.

Durch diese TCP Verbindung hast du dann einen bidirektionalen "Kanal" zwischen
deinem Server und dem Chat Teilnehmer. Der Server ist dann halt zuständig die
Chatinhalte zwischen den entsprechenden Kanälen auszutauschen.

Clientseitig ist es ein TCP-Client und der Router weiß, welcher TN aus dem internen
Netz mit wem extern verbunden ist, da ist dann keine Portweiterleitung nötig.

Statt TCP könnte man auch UDP nehmen, das ist verbindungslos, nur ist da das Problem
mit dem Client-Port möglicherweise wieder eines weil der Server ja wissen muss, an
wen er was zurückschickt, diese Port Nummer dann vom Client auf dem PC eingestellt
wird und dann wieder ein Poirt Forwarding bräuchte.

Außerdem werden bei UDP verloren gegangene Datenpakete nicht erneut gesendet.

Grüße
TurboMagic
  Mit Zitat antworten Zitat