Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi UDP mit Indy (https://www.delphipraxis.net/109158-udp-mit-indy.html)

rawsoul 25. Feb 2008 13:55


UDP mit Indy
 
Mahlzeit,

ich versuche, durch eine UDP Verbindung mit dem UDPClient Serverinformationen eines Gameservers abzurufen. Durch sendString sende ich ja immerhin schon die Anfrage - aber wie komme ich nun an die Antwort des Servers? Leider konnte mir die SuFu da nicht weiterhelfen.

Gruß,
Frank.

shmia 25. Feb 2008 15:54

Re: UDP mit Indy
 
UDP ist ein verbindungsloses Protokoll. Deshalb bräuchtest du eine UDPServer Komponente um die Netzwerkpakete zu empfangen.
Wenn du vom Server etwas wissen möchtest und diese dir eine Antwort schickt ist TCP das richtige Protokoll.

Entscheidunghilfe TCP oder UDP:
* Chat ähnliche Kommunikation => TCP
* Programm möchte seine Kollegen im Netzwerk entdecken => UPD Broadcast
* Programm sendet ständig Daten (z.B. die genaue Uhrzeit) => UDP, da immer nur das letzte Packet relevant ist
* Übertragung grösserer Datenmengen (~ > 1 KB) => TCP

generic 25. Feb 2008 16:29

Re: UDP mit Indy
 
Welcher Server?
Welches Protokoll (Layer7)?

r2c2 25. Feb 2008 17:29

Re: UDP mit Indy
 
Mal ein paar Grundlagen:
http://r2c2.weingut-rehn.de/content6...n_-_Teil_1.htm

==> Du musst wissen auch welchen port und über welches Protokoll(TCP doer UDP) der Server antwortet. Und genau da musst du auch horchen um was zu hören...

mfg

Christian

rawsoul 25. Feb 2008 18:39

Re: UDP mit Indy
 
Danke schonmal für die Antworten.

Der Port ist mir bekannt, allerdings kann ich nur über UDP eine Verbindung öffnen. Oder verstehe ich es grundlegend falsch, dass der Server mit einem anderen Protokoll als dem Queryprotokoll antworten kann?

//Edit:

Ich habe gerade ein PHP Script gefunden, welches zuerst eine Verbindung mit fsockopen öffnet (Über UDP) und anschließend die Antwort des Servers mit fwrite (gleicher Stream) liest. Noch mehr, was mich gerade verwirrt. Ich dachte, UDP wäre ein "einweg-Protokoll", wenn man es ausdrücken kann?

r2c2 25. Feb 2008 18:58

Re: UDP mit Indy
 
Zitat:

Zitat von rawsoul
Der Port ist mir bekannt, allerdings kann ich nur über UDP eine Verbindung öffnen.

Nochmal: UDP ist ein verbindungsloses Protokoll. Siehe den verlinkten Grundlagenartikel.

Zitat:

Oder verstehe ich es grundlegend falsch, dass der Server mit einem anderen Protokoll als dem Queryprotokoll antworten kann?
Möglich, aber unwahrscheinlich.

Zitat:

Ich habe gerade ein PHP Script gefunden, welches zuerst eine Verbindung mit fsockopen öffnet (Über UDP) und anschließend die Antwort des Servers mit fwrite (gleicher Stream) liest.
Das musst du mir mal vor machen. Wie soll man mit fwrite lesen können?

Zitat:

Noch mehr, was mich gerade verwirrt. Ich dachte, UDP wäre ein "einweg-Protokoll", wenn man es ausdrücken kann?
Richtig. Aber Es gibt ne Art "Absender" und der Server kann einfach seine Antwort an die Absender-Adresse schicken. Briefpost is ja auch "einweg"...

mfg

Christian

rawsoul 25. Feb 2008 19:07

Re: UDP mit Indy
 
Ich meinte natürlich fgets, war wohl zu unüberlegt geschrieben, sorry.

Dann scheint wohl die Formatierung des Querys falsch zu sein, die Antwort erhalte ich nämlich nicht. Ich werde noch ein wenig rumprobieren, danke jedenfalls für die schnelle Hilfe und Aufklärung ;)

shmia 26. Feb 2008 10:45

Re: UDP mit Indy
 
Empfehlenswert ist das Blue's Port Tool V5:
http://www.bluebitter.de/porttst2.htm
Damit kann man UDP Daten verschicken und empfangen.
Das ist sehr, sehr hilfreich, um festzustellen, ob die Sache prinzipiell funktioniert und ob die Portnummern stimmen, u.s.w.

generic 26. Feb 2008 12:10

Re: UDP mit Indy
 
Ich muss da nochmal nachbohren.

Welchen Gameserver willst du abfragen?
Für HL-Server (+Source) kann ich dir Code geben.
Für mein Projekt hlsc (halflife server check) brauche ich solche abfragen.
HLSC Homepage


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