Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Aus GPRS-Gerät Textdaten mittels TCP-Komponen empfangen (https://www.delphipraxis.net/150639-aus-gprs-geraet-textdaten-mittels-tcp-komponen-empfangen.html)

Trusti75 22. Apr 2010 16:04


Aus GPRS-Gerät Textdaten mittels TCP-Komponen empfangen
 
Hallo,

ich hab folgendes Problem: Ich muß ein wenig ausholen um es richtig zu beschreiben.
Ich habe ein GPRS-Gerät, was Daten offline einsammelt. Zu einem bestimmten Zeitpunkt (kann unterschiedlich sein) baut das Gerät eine Verbindung auf und sendet die Daten über einen Proxiserver zu mir. Ich sehe nur die Proxi-IP, die immer verfügbar ist. Wenn Daten kommen, dann werden diese über einen festgelegten Port gesendet. Zu Testzwecken hab ich das freie Tool "NETCAT" verwendet, welches TCP-Verbindungen aufnehmen kann und dieses auf meinem Rechner so gestartet, dass es den festgelegten Port(10999) abhört (Befehl: NC -p 10999). Sendet die Station die Daten, dann empfängt NETCAT diese wunderbar. Ich hab das ganze auch mit Wireshark verfolgt. Zu Beginn der Sendung kommt vom Proxy ein Sync-Telegramm, was wahrscheinlich dazu dient festzustellen, ob eine Gegenstelle verfügbar ist, welche die Daten auch abnimmt. Das wird von NETCAT quitiert und danach laufen die Daten in Textform ein.
Ziel ist aber, dass Ganze in Delphi (Delphi 2009) umzusetzen, damit ein Prozess, welcher ständig läuft Täglich die Daten übernimmt und speichert.
OK, dachte ich mir. Nimmst einen TCPserver und lässt ihn auf dem festgelegten Port hochen, bis was kommt. Ich einen einfachen TCPServer aufgesetzt(ähnlich Chat-Programm), der die Daten holen soll. Nach dem Start der Transmission vom GPRS-Modul sehe ich im Wireshark, dass das SYC-Signal ankommt , aber nicht beantwortet wird. Es wird so 5 mal probiert und danach bricht die Transmission ab, ohne dass Daten bei mir ankommen. Ok dachte ich wieder, starte ich zusätzlich zum TCPserver(delphi) noch die NETCAT und probiere es nochmal. Und danach liefen die Daten ein, sowohl im NETCAT, wie auch über meinen TCPserver.
Jetzt meine Frage: Was ist an meinem Ansatz falsch, oder wie kann ich den TCPserver dazu bringen, auf das SYNC-Telegramm zu antworten. Dieses Telegramm wird vom TCPserver scheinbar gar nicht wahrgenommen, sondern nur die nachfolgenden Nutzdaten. Jetzt bin ich ratlos und hab auch nix bei google gefunden, was mir weiterhilft.
Ich hoffe, es kann mir jemand bei der Lösung des Problems helfen oder einen Tipp geben.

Grüsse

shmia 22. Apr 2010 16:29

Re: Aus GPRS-Gerät Textdaten mittels TCP-Komponen empfangen
 
Das SYNC-Telegramm ist Bestandteil des TCP-Handshake beim Verbindungsaufbau.
Der Client sendet SYNC, der Server antwortet mit SYN-ACK was der Client wiederum mit ACK bestätigt.
All das wird automatisch vom TCP/IP Stack behandelt.

Du solltest zunächst deinen Server testen.
In der Eingabeaufforderung gibt du ein:
Code:
C:\> telnet localhost 10999
Wenn alles in Ordnung ist, wird eine Verbindung aufgebaut.
Da weder der Server noch der Client die Verbindung freiwillig beendet musst du das Fenster "gewaltsam" schliesen.
Dann das Gleiche von einem anderen Rechner im Netzwerk wiederholen:
Code:
C:\> telnet DeinRechnerName 10999
Sollte es hierbei Probleme geben, dann wäre Folgendes zu prüfen:
* steht die Listen-IP-Adresse des TCPServers auf 0.0.0.0 ?
* ist ein Virenscanner aktiv? Falls ja, kurzzeitig deaktivieren
* läuft auf deinem Rechner eine Personal Firewall? Falls ja, Port 10999 für ankommende Verbindungen öffnen

Trusti75 22. Apr 2010 17:58

Re: Aus GPRS-Gerät Textdaten mittels TCP-Komponen empfangen
 
ok, Danke erstmal für die Antwort. ich werde es testen und Bescheid geben. Aber nochmal was zum Firewall und Virenscanner. Der NETCAT hat ja die Verbindung auf dem selben PC hergestellt, wo auch der Delphi-TCPserver läuft. Also dürfte es ja keine Probleme mit den beiden Dingen geben, oder?
Grüsse

shmia 23. Apr 2010 10:26

Re: Aus GPRS-Gerät Textdaten mittels TCP-Komponen empfangen
 
Zitat:

Zitat von Trusti75
Aber nochmal was zum Firewall und Virenscanner. Der NETCAT hat ja die Verbindung auf dem selben PC hergestellt, wo auch der Delphi-TCPserver läuft. Also dürfte es ja keine Probleme mit den beiden Dingen geben, oder?

Im Prinzip richtig, aber vielleicht "kennt" der Virenscanner die NETCAT Anwendung oder NETCAT ist schon durch frühere Versuche der Firewall bekannt...

Astat 23. Apr 2010 14:09

Re: Aus GPRS-Gerät Textdaten mittels TCP-Komponen empfangen
 
Zitat:

Zitat von Trusti75
Der NETCAT hat ja die Verbindung auf dem selben PC hergestellt, wo auch der Delphi-TCPserver läuft. Also dürfte es ja keine Probleme mit den beiden Dingen geben, oder?

Hallo Trusti75, wenn ich alles richtig verstehe, horcht Netcat und der Delphi Server auf denselben Port.

Dies ist bei einem Binding auf einen Adapter nicht möglich.

D.h. zwei Server mit gleichem Port am selben System und Adapter ist ohne "tiefster Socket API" nicht möglich!

Ein "nackter Delphi Server" sollten genauso wie NETCAT funktionieren.

Zeig mal etwas Source?

lg. Astat

Duck-of-Devastation 23. Apr 2010 14:22

Re: Aus GPRS-Gerät Textdaten mittels TCP-Komponen empfangen
 
Zitat:

Zitat von Trusti75
Und danach liefen die Daten ein, sowohl im NETCAT, wie auch über meinen TCPserver.

Hallihallo!

Noch mal für mich zum Verständnis... Du siehst dann GLEICHZEITIG an beiden Programmen, daß die GLEICHEN Daten eintreffen?
Und dann hätte ich noch eine weitere Frage: Gibt es auf dem Weg zwischen Proxyserver und deinem PC einen (NAT-) Router?

Gruß

Sven


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 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