Hallo, wie kann man mit PHP einen Connection Test Durchführen?
Hallo, wie kann man mit PHP einen Connection Test Durchführen?
*~[B] EA KEYS ZUM ONLINE SPIELEN.~*
Crysis, Battlefield2 nd 2142, Need for Speed Pro Street and more ...
falsches forum ? frag in php foren nach, was hat das mit teamspeak zutun?
habs mal hierhin verschoben
Alle sagten es geht nicht, doch dann kam einer, der wusste das nicht und machte es!
Er hat ja schon einen thread eröffnet, der aber schon geclosed wurde
http://de.php.net/manual/de/function.fsockopen.php
Genau, doch leider blick ich da net so durch mit dem fsockopen :oops: .
Wäre echt nett wenn mir das mal einer erklären könnte. *hoff*
*~[B] EA KEYS ZUM ONLINE SPIELEN.~*
Crysis, Battlefield2 nd 2142, Need for Speed Pro Street and more ...
naja daran kommste aber net vorbei ... du machst nen fsockopen auf den TS Port und wenn er dir TRUE zurückliefert läuft auf dem Port etwas ... also entsprechend dein Teampseak eben. Wenn du fsock net raffst ... geh auf php.net die Doku ist very good ... und in den Kommentaren sind zu hauf Anwendungsbeispiele.
Jo. Aber auf es joint kein Bot Player auf meinen Server... Das ist ja das was ich erreichen will. UNd dafür muss man dann ja halt die datenpakete von nem player faken und per PHP versenden, ich weiß aber net wie man die pakete versendet .... *brauchhilfe*
*~[B] EA KEYS ZUM ONLINE SPIELEN.~*
Crysis, Battlefield2 nd 2142, Need for Speed Pro Street and more ...
ja steht doch alles auf PHP.net wie ich schon sagte!!!!!!!!!!!!!!!!
Er macht nen socket zu nem Webserver auf und schickt die Befehle per fwrite an den Server .... jetzt musst du dir nur noch das Protokoll von TS zu gemüte führen un dem Server die Pakete senden .... allerdings solltest du dir gedanken machen was passiert wenn dein script ausläuft ... was ja bei üblichen PHP Installationen nach etwa 30 Sek. der Fall ist ....Code:<?php $fp = fsockopen("www.example.com", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno) \n"; } else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: www.example.com\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp); } ?>
Das script läuft nach der standart PHP.ini nicht minimal 30 sekunden, sondern maximal 30 sekunden. Sonst würde der browser ja bei jeder webseite mindestens 30 sekunden laden, auch wenn die seite bereit aufgebaut ist.
Zum auslaufen:
Stichwort cronjob.
Das script sollte natürlich besser per shell ausgeführt werden und nicht per browser. Dazu muss der safe_mode off sein!Code:<?php set_time_limit(0); //Maximale ausführungszeitzeit: unbegrenzt ignore_user_abort(TRUE); //Script soll nach abbruch der verbindung mit dem clienten weiter laufen function machwas() { sleep(10); //30 sekunden warten machwas(); //funktion erneut aufrufen } machwas(); ?>
Anderes beispiel:
Alle 10 sekunden wird der code in der function bzw in der schleife ausgeführt.Code:<?php set_time_limit(0); //Maximale ausführungszeitzeit: unbegrenzt ignore_user_abort(TRUE); //Script soll nach abbruch der verbindung mit dem clienten weiter laufen while(TRUE) { sleep(10); //30 sekunden warten } ?>
Zu dem teamspeak-problem:
Code:<?php $ipaddy = '127.0.0.1'; $port = 8767; $sock = fsockopen('udp://'.$ipaddy, (int)$port, $num; $error, 30) || die('Fehler! Fehlernummer:'.$num."\n".'Fehler:'.$error); fputs(das ganze teamspeak zeug); ?>
Geil, das hat mich einen großen schritt weitergebracht jetzt muss ich es nur noch schaffen herauszufinden was ich für Pakete senden muss. Muss ich die dann einfach beischreiben ???Code:$out = "datenpaketehier";
*~[B] EA KEYS ZUM ONLINE SPIELEN.~*
Crysis, Battlefield2 nd 2142, Need for Speed Pro Street and more ...
Prinzipiell schon. Aber du musst bedenken, dass du keinen browser simulieren willst, wie in dem beispiel oben per TCP. Du musst einen UDP-sock öffnen und das als protokoll angeben.