thealex
Goto Top

Auslesen von Informationen die über einen UDP-Port gesendet werden

Hallo liebes Administratorboard,

ich habe einen Gameserver der via UDP auf einem bestimmten Port daten an einen Listingserver sendet. Der Gameserver läuft auf einem Windowsserver, nun zu dem kern der Frage:

Kann ich diese gesendeten Daten irgendwie auslesen um sie via PHP anzeigen lassen zu können?


Das Problem ist das der Listingserver häufig offline ist und ich die Daten auf meiner Homepage anzeigen lassen möchte!


MfG

TheAlex

Content-ID: 372891

Url: https://administrator.de/contentid/372891

Ausgedruckt am: 24.11.2024 um 16:11 Uhr

136037
136037 03.05.2018 um 13:58:57 Uhr
Goto Top
TheAlex
TheAlex 03.05.2018 um 14:24:30 Uhr
Goto Top
Ein wenig meh Informationen wären nett. Diese liste kenne ich, nur wie genau ich die informtionen bekomme ist mein Problem.
136037
136037 03.05.2018 um 14:36:56 Uhr
Goto Top
Ohne das gesendete Format zu kennen : Glaskugelraten.
TheAlex
TheAlex 03.05.2018 um 14:43:19 Uhr
Goto Top
Ok, es handelt sich um das OpenSource Game Simutrans, bin leider nicht der Programmierer aber jemand der mehr ahnung hat sollte das format bestimmt rausfinden oder nicht?
136037
136037 03.05.2018 aktualisiert um 14:45:23 Uhr
Goto Top
Zitat von @TheAlex:

Ok, es handelt sich um das OpenSource Game Simutrans, bin leider nicht der Programmierer aber jemand der mehr ahnung hat sollte das format bestimmt rausfinden oder nicht?
Sicher, mach dir ein Socket das auf dem Port lauscht und analysiere den Input oder belausche die Kommunikation direkt mit Wireshark.
TheAlex
TheAlex 03.05.2018 um 14:48:41 Uhr
Goto Top
Und welche funktion lauscht auf einem UDP-Port?
136037
136037 03.05.2018 aktualisiert um 14:51:07 Uhr
Goto Top
Zitat von @TheAlex:

Und welche funktion lauscht auf einem UDP-Port?
Einfach obigen Link mal genau lesen und sich damit minimal beschäftigen.
http://php.net/manual/de/function.socket-listen.php
Kraemer
Kraemer 03.05.2018 um 14:54:05 Uhr
Goto Top
Zitat von @TheAlex:

bin leider nicht der Programmierer aber
gut, das du das erwähnst. Ich wollte heute noch mit Sheldon die Geheimnisse des Universums lösen.

Gibt es eigentlich irgendwo ein Schild im Internet, auf dem steht, dass man hier kostenlose Programmierarbeit bekommt?
TheAlex
TheAlex 03.05.2018 um 15:14:24 Uhr
Goto Top
<?php
error_reporting(E_ALL | E_STRICT);

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_UDP);
if ($socket === false) {
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);

    die("Konnte keinen Socket erzeugen: [$errorcode] $errormsg");  
}
$ip = '84.200.7.187';  
$sock = socket_bind($socket , $ip);

socket_connect($sock, '84.200.7.187', 13353);  

$request = 'GET / HTTP/1.1' . "\r\n" .  
           'Host: simu.gamercircle.de' . "\r\n\r\n";  
socket_write($sock, $request);

// Die Socketverbindung schlieen
socket_close($sock);


?>

Erzeugt jetzt zumindest eine Ausgabe:

Konnte keinen Socket erzeugen: [93] Protocol not supported

Hatte auch schon via SOCK_RAW :

Konnte keinen Socket erzeugen: [1] Operation not permitted

Wie bekomme ich jetzt die Daten ausgelesen, bzw was verstehe ich falsch?

Und das mit dem Schild ist einfach erklärt:

Ich möchte keinen fertigen Code, lediglich die richtigen Funktionen zur Hand bekommen^^
Kraemer
Kraemer 03.05.2018 um 16:13:04 Uhr
Goto Top
Na das sieht doch schon anders aus.
Bin nicht der PHP-Pro - aber folgende sehen ganz nett aus:
https://www.phpgangsta.de/udp-nachrichten-versenden-und-empfangen
https://www.binarytides.com/udp-socket-programming-in-php/

Vor allem sieht man da, das SOCK_DGRAM genutzt wird. Dazu hier ein weiterer Hinweis: http://php.net/manual/de/function.socket-create.php

Gruß
maretz
maretz 04.05.2018 um 06:51:05 Uhr
Goto Top
Moin,

erstmal musst du dir darüber klar werden WAS du willst:
a) einen Listener -> d.h. ein Programm welches Daten empfängt
b) einen Sender -> d.h. du willst irgendwo was hin senden

Wenn ich das beim überfliegen so richtig sehe versuchst du dein Glück mit nem Listener. An sich ja nich schlimm, aber der Port ist doch bereits von deinem Server belegt. Jeder Port kann genau EINMAL zur Zeit belegt sein. Wenn also dein Server bereits gestartet ist dann hat der sich den Port gegriffen und dein PHP-Programm kann nix tun! Fertig.

Es wäre allerdings eh unsinnig auf die Art rauszufinden ob der Server noch läuft. Nehmen wir an du hast dein Programm irgendwie davon überzeugt den Port zu bekommen - dann würdest du die Daten lesen aber dein Server würde die nicht bekommen... (Und ganz nebenbei: Ein erfolgreicher durchlauf deines Programmes würde bedeuten das der Server gecrasht ist... auch ne coole Variante, ist mal was neues).

Willst du also wissen ob dein Server noch läuft kannst du
a) prüfen ob die PID noch existiert / der Prozess noch läuft
b) prüfen ob der Port noch offen ist
c) so dein Server-Prozess nen Monitoring zulässt kommandos hinschicken und das Ergebnis anfragen.

Und um deine nächste Frage vorwegzunehmen: Bauen können das vermutlich viele im Handumdrehen, ohne eigene Bemühung wird aber wohl keiner das machen wollen (da es auch "unsere" Freizeit ist )
gierig
gierig 04.05.2018 um 12:28:26 Uhr
Goto Top
ich habe einen Gameserver der via UDP auf einem bestimmten Port daten an einen Listingserver sendet. Der Gameserver läuft auf einem Windowsserver, nun zu dem kern der Frage:

Kann ich diese gesendeten Daten irgendwie auslesen um sie via PHP anzeigen lassen zu können?

Wenn ich das Richtig verstehe dann verstehe ich das anders als anderen hier :-o

Dein Game Server sendet UDP an eine Externe Adresse, Du willst das abfangen und ggf. selber zu Anzeige bringen.
Richtig ?

Wenn Ja, vergiss den ganzen Socket Quatsch, den das Zeugs ist dafür da einen Port zu öffnen der dann auf Daten Lauscht.
Dazu mus der Game Server dann aber auch dahin senden.

Du benötigst dann einen Sniffer der den interessanten Traffic auslesen kann und dir Verfügung stellt.
Den kannst du dann weiterverarbeiten. Wireschark bzw. Tschark würden dafür gehen. Ist aber wohl mit
der Kanone auf den Spatz geschossen. Der Unterbau hhttps://de.wikipedia.org/wiki/WinPcap wäre die Basis
für eine maßgeschneiderte APP setzt aber voraus das Du was von der Materie Verstehst dich einarbeitest.