Avatar billede martinbk Nybegynder
05. december 2003 - 17:50 Der er 1 kommentar og
1 løsning

php snak med telnet

hejsa E

jeg har rodet lidt med noget kode som skal skifte gameserver på min box via et php script, og noget telnet kommunikation, problemet ligger nu i at jeg ikke rigtig kan få php til at kommunikere med telnet.

Her er output fra en alm. telnet session:
Spil? dod
      1

det er også fint, der retuneres 1 ved succesfuld skift, så jeg kan jo konkludere problemet må ligge i min php kode, her er foreløbig hvad jeg har strikket sammen:

<html>
<form method="post">
<select name="game">
<option value="q3ra3">Quake 3 Rocket Areana</option>
<option value="q3osp">Quake 3 OSP</option>
<option value="cs">Half-Life Counter-Strike</option>
<option value="wolf">Return To Castle-Wolfenstein</option>
<option value="dod">Half-Life Day Of Defeat</option>
<option value="bf">Battlefield 1942</option>
<option value="cod">Call of Duty</option>
<option value="moh">Medal of Honour</option>
<option value="ut">Unreal Tournament</option>
<option value="ut2k3">Unreal Tournament 2003</option>
</select>
<input type="submit" name="submit" value="change game">
</form>

<?
if(isset($_POST['submit'])) {

  function changeGame($host, $port, $kommando) {
    $fp = fsockopen($host, $port, $errno, $errstr, 5);
    if(!$fp) {
      echo "kunne ikke oprette forbindelse til ".$host;
      return false;
    }
    else {
      sleep(1);
      fputs($fp, $kommando);
      sleep(15);
      stream_set_timeout($fp, 10);
      $res = fread($fp, 100000);
      fclose($fp);
      return $res;
    }
  }
  $game = $_POST['game'];
  $respons = changeGame("ip", "port", $game);
  echo $respons;

  switch ($respons) {
    case 0:
      echo "der gik kage i noget";
      break;
    case 2:
      echo "alt gik som det skal";
      break;
    case 4:
      echo "serveren er midlertidig nede";
      break;
    default:
      echo "intet tal eller forkert tal";
      break;
  }
}
?>
Avatar billede brilleaben Nybegynder
05. december 2003 - 18:12 #1
Måske du mangler at sende linefeed?  Dvs. din  fputs bliver til:

fputs($fp, $kommando."\r\n");

(eller blot  fputs($fp, $kommando."\n");  )
Avatar billede martinbk Nybegynder
05. december 2003 - 18:51 #2
ja nogengange skal der jo ikke meget til, men det løste sørme mit problem :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester