Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Nachricht an Server schicken mit LEN = 0? (https://www.delphipraxis.net/151959-nachricht-server-schicken-mit-len-%3D-0-a.html)

schwa226 7. Jun 2010 20:07

Nachricht an Server schicken mit LEN = 0?
 
Hi,

ich stehe gerade vor einem Problem.

Ich muss bei einem Server ein Command bestätigen. Der Original Client schickt was an den Server IP:Port - jedoch mit Datalänge 0!?

Kann ich das mit dem Indy TCP Client das auch machen?
Wüsste jetzt nicht wie, da bei WriteDirect die Länge der Daten überprüft werden und bei 0 ja dann nichts gesendet wird.

Oder ist das sowas wie ein Ping?
Oder geht das eigentlich gar nicht?

Bin etwas ratlos...

wicht 7. Jun 2010 20:44

AW: Nachricht an Server schicken mit LEN = 0?
 
Ich würde sagen, dass das nicht geht. Woher weißt du denn, dass die Datenlänge 0 ist?
Falls du Client und Server da hast, eventuell mit Wireshark mal den Traffic aufzeichnen und angucken? Könnte ja z.B. sein, dass es ein paar NULL Bytes sind, und der Indy Client die unterdrückt, weil er auf Text-Modus oder sonst was steht, falls du mit diesem 'geforscht' hast? Ist nur ins blaue geraten.. :-)

schwa226 7. Jun 2010 21:37

AW: Nachricht an Server schicken mit LEN = 0?
 
Mal sehen! Danke für den Tipp von Wireshark.

Werd mir einmal den Traffic ansehen.

s.h.a.r.k 7. Jun 2010 22:32

AW: Nachricht an Server schicken mit LEN = 0?
 
Könnte mir auch nur vorstellen, dass ein #0 gesendet wird.

Luckie 7. Jun 2010 22:45

AW: Nachricht an Server schicken mit LEN = 0?
 
Aber das hätte die Länge eins. Eine Nachricht mit der Länge null gibt es nicht, denn das würde bedeuten dass die Informationslänge null wäre, also keine Information gesendet wird. Übrigens ein schönes Thema aus der Theoretischen Informatik: Nachrichten und Informationen.

SirThornberry 8. Jun 2010 08:22

AW: Nachricht an Server schicken mit LEN = 0?
 
Ich vermute das einfach ein Paket entsprechend dem Protokoll gesendet wird mit Informationslenge 0
Also einfach ein Paket ohne jegliche Zusatzinformationen.

schwa226 9. Jun 2010 07:13

AW: Nachricht an Server schicken mit LEN = 0?
 
Das Protokoll hat normal 4 Bytes Header (Kommando & Daten länge). Je nach angegebener Datenlänge im Header dann halt auch noch Daten.
Somit ist die Mindestlänge 4 Bytes. Also Header ohne Daten.

Wenn ich mir eine Header-Only Nachricht ansehe, sehe ich auch die empfangene Länge 4.

Und genau da empfängt der Server hin und wieder aber auch eine Nachricht mit der Länge 0.
Aber der Server reagiert darauf und nimmt es sozusagen als Bestätigung an.

Kann das sowas wie eine Überprüfung vom Client sein ob die IP/Port noch verfügbar ist?
Vielleicht im UDP Protokoll?

SirThornberry 9. Jun 2010 08:07

AW: Nachricht an Server schicken mit LEN = 0?
 
Länge 0 auf das gesamte gibt es nichts. Wenn 0 Byte gesendet werden, also nichts gesendet wird kann auch nichts empfangen werden. Wenn dann wird eben dein Header gesendet mit Datenlänge 0 was angibt das keine Daten folgen.
Aber es ist definitiv so das nicht empfangen wird wenn nichts gesendet wird. Wenn trotzdem was ankommt wird auch was gesendet, und wenn es nur das Grundpaket ohne Daten ist.


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