ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
302
302
EMPFEHLEN
-
02.09.09 16:50 #1
- Registriert seit
- Feb 2008
- Beiträge
- 522
Hi
ich habe ein ärgerliches Problem mit der Funktion fgets. Ich schreibe zur Zeit ein sogenanntes Rcon-Tool für Call of Duty 4, mit dem man dem Gameserver per Browser Befehle zukommenlassen kann, ohne selbst im Spiel eingeloggt zu sein.
Das ganze funktioniert, bis auf einen Haken. Wenn ich die Spielerliste holen möchte (befehl /rcon status) gibt es genau 2 Optionen.
1) Ich erhalte nicht die ganze Fehler liste
2) Ich lande in einer sehr langen Schleife, und erhalte gar kein Ergebnis (wenn die Seite zu Ende geladen hat => Quelltext wird nicht weiter geladen.)
Der Code:
Anmerkungen:PHP-Code:<?php
error_reporting('E_ALL');
class rcon{
private $ip;
private $port;
private $pass;
private $command;
private $handle;
public function __construct($ip,$port,$pass){
$this->ip = $ip;
$this->port = $port;
$this->pass = $pass;
$this->command = str_repeat(chr(255), 4);
}
public function connect(){
$this->handle = fsockopen('udp://'.$this->ip, $this->port, $errno, $errstr);
if (!$this->handle)
die('Unable to open socket connection: '.$errstr.' (#'.$errno.')');
}
public function disconnect(){
fclose($this->handle);
}
public function cmd($cmd){
if( !fwrite($this->handle,$this->command.' rcon '.$this->pass.' '.$cmd."\n") )
die('Failed to send command.');
$fp = $this->handle;
$runs = 1;
$response = '';
while( true ){
if( feof($this->handle) )
die('FEOF');
$f = fgets($fp);
$response .= $f;
if( feof($this->handle) )
die('FEOF');
if($runs == 25){ break;}else $runs++;
}
return str_replace('','',$response);
}
}
$rcon = new rcon('94.76.214.117', 1024, '*********');
$rcon->connect();
?>
<pre>
<? var_dump($rcon->cmd('status')); ?>
</pre>
<?php
$rcon->disconnect();
?>
-Es wird _nie_ FEOF ausgegeben.
-Jenachdem wieviele Spieler online sind (sprich Länge des Rückgabestrings) müsste die Anzahl bei $runs erhöht oder verringert werden um den kompletten Satz zu erhalten.Napoleon trug rote Kleidung, damit seine Soldaten nicht sahen, dass er verwundet war.
Die Naz!s trugen braune Hosen ...
-
04.09.09 19:38 #2
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Moin,
kommt denn was an mit fgets()? Wenn ja, kannst du evtl. mal an dem Ini-Paramter default_socket_timeout drehen?Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
Ähnliche Themen
-
[C] Problem mit fgets()
Von EngGi im Forum C/C++Antworten: 7Letzter Beitrag: 05.11.09, 16:42 -
problem mit fgets
Von jogisarge im Forum PHPAntworten: 4Letzter Beitrag: 06.06.08, 22:45 -
Problem mit gets() / fgets()
Von BOND_WR im Forum C/C++Antworten: 4Letzter Beitrag: 05.09.07, 10:57 -
Problem mit fgets() in c
Von maltor im Forum C/C++Antworten: 4Letzter Beitrag: 03.05.06, 20:07 -
Mysteriöses fgets-Problem!
Von revelation im Forum PHPAntworten: 4Letzter Beitrag: 15.04.04, 23:11





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren