UDP Daten empfangen und auswerten...nicht sichatbare Zeichen?



  • Hallo,
    was ich versuche ist einen Gameserver zu querien. Das klappt auch ganz gut nur scheint die Info die ich bekomme ein bisschen zu kurz zu sein.
    Name des Server, Version und Name des Spiels kommen richtig rüber nur fehlt die ganze Info über Teams etc. Irgendwie vermute ich das die Info zwar da ist nur nicht angezeigt werden kann, wenn das möglich ist.

    IdUDPClient1->Host="62.26.123.24";
            IdUDPClient1->Port=28001;
            IdUDPClient1->Active=true;
            IdUDPClient1->Send("\x62\x01\x02");
    
            String receiveStr = IdUDPClient1->ReceiveString(80000);
            ListBox1->Items->Add(receiveStr);
    

    Buffersize hab ich für Testzwecke mal auf 80000 gemacht, daran sollte es also nicht liegen.
    Dieselbe Operation aus einem richtig Funktionierenden php script kopiert sieht so aus.

    $this->sp = fsockopen("udp://".$this->server, $this->port, $errno, $errstr, 30);
    
    		if ($this->sp)
    		{
    			//request server info
    			fwrite($this->sp, "\x62\x01\x02", 3);
    

    Hat jemand ne Idee an was das liegen kann?

    Grüße

    Grey



  • vielleicht liegts ja an den indy komponenten?
    benutz doch mal normale socket api, da lernst du wenigstens was bei.



  • hm sichern guter Vorschlag,
    ich bin so einer der immer ganz gerne in Probleme rennt umd ann zu erkennen das alles fürn ars** is und nochma von vorne anfängt, so halte ich dann doch die MOtavation ein bißchen höher.

    Kann mir vielleicht trotzdem jemand weiterhelfen wo hier genau der Knackpunkt liegt? Mir ist irgendwie nicht klar inwiefern die Komponente ihren Sinn erfüllt wenn sie doch so eingeschränkt ist.



  • auf welchem port muss der udp server socket fuer die antwort lauschen?

    dir ist doch klar, dass udp ein verbindungsloses protokoll ist, also dass man fuer antworten einen eigenen serversocket braucht?



  • Prinzipiell ja, dachte nur die Komponente erledigt das sofort da ja eben die Receive funktion existiert und soweit ich das sehe einigermaßen ihren Dienst tut; Ich bekomme ja bei der richtigen Anfrage Information zurück. Den Lokalport kriegt der server ja über den header in meiner Anfrage...zumindest dachte ich zumindest es wäre so.

    Versteh ich das gerade richtig das den Text den ich mit Receive bekomme garnicht die eigentliche Antwort ist sondern nur sowas wie ein Aknowledge?



  • das kann ich auf die ferne nicht beurteilen.
    diese indy-komponenten sind in "fachkreisen" (bei den leuten, die mit sockets erfahrung haben) teilweise verhasst, weil sie die einfachsten sachen zu sehr abstrahieren...

    lies einfach die doku zu diesem idUDP dingens und benutze es so, wie es das gameserverprotokoll vorsieht.



  • oki 😉
    danke für die Hinweise


Anmelden zum Antworten