Vor einigen Tagen wollte ich ein PHP Skript schreiben welches nachschaut ob auf einer bestimmten IP Adresse auf einem bestimmten Port ein Dienst läuft. Dazu wollte ich folgendes Skript benutzen:
function check_server($ip, $port) { $fp = fsockopen ($ip, $port, $errno, $errstr, 10); $result = ""; if($fp == false) { $result = "offline"; } else { $result = "online"; } fclose($fp); return $result; } $gameserver= check_server("udp://192.168.0.13", 9604); $accountserver= check_server("udp://192.168.0.13", 9601); echo "Gameserver: ",$gameserver,"
"; echo "Accountserver: ",$accountserver,"
";
Das Problem an der Sache ist das bei UDP immer true zurückkommt da das ganze ja ein verbindungsloses Protokoll ist. Bei TCP funktioniert diese Herangehensweise prima, bei UDP kann man es vergessen… Ganz interessant zu diesem Thema ist die Seite http://www.sitepoint.com/article/udp-portscanning-php/. Mal schauen ob sich das Problem lösen läßt.