fsockopen Gibt immer nur ein wert wieder

Michaelberlin

Grünschnabel
fsockopen geht nicht. Game Server Status

Hallo ,

ich habe ein großes Problem, bin grade dabei ein Script zubasteln womit ich einen Gameserver(Half-Life Port udp :27015) überprüfen kann ob der „Online“ oder „Offline“ ist (brauche im Moment nur diese eine Funktion.) ich habe bis jetzt das .->


PHP:
$ip="192.168.0.4";
$port="27015";
if (!fsockopen("udp://".$ip, $port)){
echo"Online";
}else{
echo"Offline";
}


So aber jetzt zu meinem Problem wenn ich diesen Script ausführe wird mir immer der wert „Online“ ausgegeben egal ob der Server nun wirklich „on“ oder „off“ ist ich habe jetzt schon 1000 verschiedne Varianten probiert.
Der Script Funktioniert einbahnfrei mit z.B. Port tcp 80 aber sowie ich mit den udp ports probiere geht es nicht mehr weiß einer wieso ? oder hat einer eine Lösung ?

Ich wurde mich sehr über eine baldige Antwort freuen ich sitze jetzt schon 3 Tage hier und komme nicht weiter danke !

Mit freundlichen Grüßen
Micha
 
Zuletzt bearbeitet:
Nutze doch zunächst die von [phpf]fsockopen[/phpf] zur Verfügung gestellten Möglichkeiten zur Fehlersuche (und teile uns die entsprechenden Meldungen mit).
Nach Deiner If-Abfrage bedeutet die Ausgabe von "Online" übrigens, dass der Server nicht zu erreichen ist, da Du das Ergebnis von [phpf]fsockopen[/phpf] negierst.

Gruß hpvw
 
hoff ihr könnt mir noch helfen.

PHP:
$ip="192.168.0.4"; 
$port="27015"; 
if (!fsockopen("udp://".$ip, $port, $errno, $errstr)){ 
echo "online Fehler: $errno - $errstr<br>\n";
}else{ 
echo "offline Fehler: $errno - $errstr<br>\n";
}
es kommen keine fehler:
HTML:
offline Fehler: 0 -

mfg
Micha
 
Du hast aber immer noch das Ergebnis von fsockopen negiert. das wäre wie:

Online->Angezeigt: Offline
Offline->Angezeigt: Online

Vieleicht solltes du erst mal das ändern
 
Ich habe das jetzt auch mal probiert und seltsamerweise gibt fsockopen bei mir immer eine Ressource-ID zurück, unabhängig davon, ob es den Server gibt oder nicht.
Ich hatte mir dann gedacht, ich versuche mal mit fgets etwas von dem vermeintlichen stream zu lesen und das auszuwerten, aber das führt auch nicht zum Erfolg, da das Skript dann im Fehlerfall einfach auf sich warten lässt und nichts passiert.
Du könntest jetzt [phpf]feof[/phpf] und die anderen f-Funktionen noch probieren, aber wenn das nicht hilft, befürchte ich, dass ein On-/Offline-Check mit fsockopen nicht geht.

Gruß hpvw
 
das liegt daran das du upd verwendest. upd ist ein verbindungsloses Protokoll deswesen ist es immer online egal ob da jemand ist oder nicht. Googel mal nach "udp protokoll" gibt da viele erklärungen von Leuten die davon mehr ahnung haben wie ich.

(weiss nicht ob man das vergleichen kann, aber das ist ähnlich wie bei einem Funkgerät - nur weil du in dein Funkgerät was reinsprichst heisst das noch lange nicht das das auch jemand hört)
 
Zurück