TServerSocket in Routernetzwerk kann keine clienten akzeptieren.
-
Also folgendes Problem:
Ich habe ein Server - Client Programm pogrammiert Clienten verbinden sich mit dem server und können daten austauschen.
Das problem ist wenn sich der server hinter einem router befindet kann kein client eine verbindung herstellen. Wenn nur ein DSL modem oder etwas ähnliches verwendet wird klappt es ohne probleme was muss ich machen damit sich clienten auch mit einem server der sich hinter einem router befindet verbinden können?also ports freischalten hat bis jetzt nich funktioniert
als ziel ip zum verbinden für die clienten verwende ich die internet ip die man auch auf seite wie [url]www.meineip.de findet[/url] angezeigt bekommt
-
Lieber Webmaster,
du musst den Port deines Servers am Router auf deine Lan IP forwarden. Da der Client die erste Instanz des Verbindungsaufbaus startet und eine TCP/IP Verbindung zum Server aufbauen will wird dieses Paket mit einem "new" flag versehen und von der Firewall verworfen wenn keine speziellen Regeln angewendet wurden. Nun musst du den Port an deinem Router forwarden.
Als Client hinter einer Firewall kann ohne Probleme durch die Firewall eine Verbindung aufgebaut werden weil die Rückantwort des Servers nach einem erfolgreichen Verbindungsaufbau mit einem "established/related" flag versehen und wird via NAT an den Client weiter gereicht und nicht verworfen. Hast du das Prinzip verstanden ?Also googeln wir nach folgenden Begriffen:
- Portforwarding (oder manual deines Routers einsehen)
- NAT
-
Also das prinzip schon:
Ich muss beim clienten also nur die LAN - IP des Servers einstellen um eine verbindung herzustellen im internen netzwerk des routers kann ich mit der lan - IP prolmlos an clienten kommen im internet bzw. WAN kann es mit einer 192.168 ter IP ja nicht klappen.- Muss ich die host adresse beim beim clientsocket dafür anpassen und wenn ja wie?
- oder muss ich so ein ip packet selbst erstellen und auch in diesem fall wenn ja, wie?
-
Die Clients verbinden sich auf deine externe IP-Adresse. Du (bzw. dein Router) musst dafür sorgen, dass Anfragen auf dem von dir spezifizierten Port an die interne Adresse des Servers weitergeleitet werden. Üblicherweise geschieht das mit dem oben erwähntem Port-Forwarding im Router.
Das hat aber nichts mit dem BCB und eigentlich auch nicht mit Programmierung zu tun, deshalb: ab dafür!
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum Themen rund um den PC verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
naja ich hatte es mit borland c++ programmiert und dachte es ist ein programmiertechniches problem den ich kann auch nicht mit der externen adresse auf das program connecten.
-
Nein, du hast es schlicht und ergreifend noch nicht verstanden. Es geht um nichts anderes als eine Regel für deine Firewall dass wenn ein paket an Port X ankommt, dieses Paket an deine Lan IP (da wo dein Server Programm drauf läuft) auf Port X weiter gereicht wird ! verinnerlichen und anwenden! du erwähntest das du es schon gemacht hast. dann hast du es falsch gemacht ! manual durchlesen und richtig machen. Erzähl mir jetzt bitte nicht das du dich versuchst über ne private ip 192.168.x.x übers wan zu verbinden,hoffe das ich das missverstanden habe
-
ne wuste schon das ich das ne private ist deshalb hab ichs ja gleich ausgeschlossen das problem lag darin das ich keinen router nutze und nach einer möglichkeit gesucht hab wie man leuten die nicht soviel ahnung von ihren routern haben das server sein einfach ermöglicht.
aber ich hab es mit ein paar bekannten ausgibig getestet und auch das beispiel verstanden funktioniert auch alles wenn amn dieses forwarding anwendet. nur di nötigen einstellungen waren recht komliziert.
danke für die hilfe.
-
Falls der Router UPnP kann wäre das vielleicht eine Möglichkeit, die Sache zu vereinfachen (für den Enduser!! :D)...
-
Oder stell den Server in die DMZ.