Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   INDY 10 TCP übers Internet (https://www.delphipraxis.net/167802-indy-10-tcp-uebers-internet.html)

hesch21 19. Apr 2012 15:47


INDY 10 TCP übers Internet
 
Hallo allerseits

ich habe ein vermütlich dämliches Problem. Ein simpler TCP-Server und ein an sich ebensolcher Client. Das schöne vorab. Der Client verbindet sich problemlos mit dem Server und der kommt auch auf die OnExecute procedure. Und anmerken möchte ich, dass ich nicht ganz unbedarft beim Thema selbst bin. Ich habe mehrere TCP/IP-Applikationen entwickelt, welche mehrfach im Einsatz sind. Allerdings alle nur für LANs.
Das Besondere hier nun: Das ganze soll übers Internet laufen. Also Rechner irgendwo - Router - Web - Router - mein Server. ich habe deshalb im Client die Ping-Unit einbezogen, um die IP meines Servers über den Hostnamen zu ermitteln (und dieser Hostname ist erst noch ein DYNDNS.ORG-Name). Aber wie gesagt, das funktinoiert. Ich kann vom Client irgendwo im Web eine Meldung an den Server senden, der empfängt sie, verarbeitet sie und hängt sich dann auf dem
Code:
AContext.Connection.IOHandler.WriteLn('200 ' + Ergeb);
auf. Letzter Befehl im OnExecute. Zum Client kommt nichts zurück.

Ich habe nun die Vermutung, dass der Server gar nicht weiss, wohin er die Rückmeldung senden soll. An die IP des Routers des Clients? Wie kommt sie dann zum richtigen Rechner dahinter? Ich kann ja von meinen Kunden nicht verlangen, dass er für diese Applikation am Router eine 'Durchleitung' mit unterschiedlichem Port für jeden betroffenen Rechner einrichtet.
Ich könnte logischerweise den Client sowohl die IP des Rechners als auch die des Routers (also die gegen aussen, das WEB) mitliefern lassen, aber ich habe keine Ahnung, was ich damit im Server-Programm anfangen könnte.

Für jede Art von Tipps wäre ich dankbar.

mjustin 19. Apr 2012 18:29

AW: INDY 10 TCP übers Internet
 
Firewalls (Router auf der Client- oder Serverseite) können die Antwort-Pakete vom Server an den Client blockieren.

Wenn aus einer Umgebung, die zum Internet keine Portfilter verwendet, der Client funktioniert, liegt das Problem vermutlich eher im Netz des Endkunden und seiner Firewall (Paketfilter-Konfiguration).

Wenn es aus dieser Umgebung heraus nicht funktioniert, ist schon auf dem Weg der Pakete vom Server zum Internet über den Router eine Filterung aktiv. Dann muss die Firewall des Serverzugangs zum Internet konfiguriert werden.

Dies sind aber nicht die einzigen möglichen Probleme (ich bin kein Internetexperte, aber es gibt auch "Routingprobleme" - die nicht mit Filtern oder Firewalls zusammenhängen).

Valle 20. Apr 2012 06:27

AW: INDY 10 TCP übers Internet
 
Wenn die Software wirklich beim Kunden laufen soll, dann musst du davon ausgehen, dass dort die eigenartigste Firewallsofware läuft. Einzig zuverlässig wäre dann eine Verbindung über einen eigenen Server von dir, sodass Software beim Kunden immer die Anfragen öffnet, aber nie entgegennimmt. Fast jede populäre Software beim Kunden macht das so. (z.B. Chats)

Btw, das mit dem Ping klingt sinnlos. Du kannst doch einfach direkt den Hostname für die Verbindung eingeben, das muss IIRC keine IP sein. Und wenn doch, nimmt man nicht Ping sondern gethostbyname().

Liebe Grüße,
Valentin

hesch21 23. Apr 2012 12:23

AW: INDY 10 TCP übers Internet
 
Vorab danke für Eure Antworten.
Um was geht's mir eigentlich: Eine simple Lizenz-Überprüfung. Die Software auf dem Client übermittelt dem Server einen Lizenz- und einen Prüfschlüssel, das Serverprogramm kontrolliert das und gibt dem Client eine Freischaltung oder einen Fehlercode zurück.

Ein Kommentar zur Ping-Unit. Ich brauche die, um die DYNDNS.ORG-Adresse meines Routers, hinter dem mein Server sitzt, in eine IP aufzulösen.

Aber vielleicht liegt ja das Problem in meinem Testaufbau. Es ist nicht ganz einfach, Tests von zwei unterschiedlichen Internet-IPs zu machen weshalb ich es bisher immer auf zwei Rechnern versucht habe, die am gleichen Router hängen, also 'gegen aussen' dieselbe IP haben. Könnte es sein, dass das den Server zum loopen bringen?

bernhard_LA 23. Apr 2012 14:24

AW: INDY 10 TCP übers Internet
 
ggf. mal mit meinen TCP IP demos auf source forge probieren .... verwenden INDY 10 auch nur im Firmen LAN


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:19 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz