Socketserver schließt sofort wieder

glowhand

Programmierer
21 April 2006
273
16
Hallo!
Habe hier ein kleines Socket-Script geschrieben:

Ich möchte erreichen, dass Sockets, bei denen sich irgendwas verändert hat, durchlaufen werden, im Durchlauf die Eingabe auslesen und ausgeben.
Stattdessen schließt der Server sofort wieder.

PHP:
#!/usr/bin/php -q 
<?php 
$address = "127.0.0.1"; 
$port = "10000"; 

set_time_limit(0); 
ob_implicit_flush(); 

if (($master = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) === false) 
{ 
  echo 'Fehler bei socket_create(): '.socket_strerror(socket_last_error()); 
} 

if ((socket_bind($master,$address,$port)) === false) 
{ 
  echo 'Fehler bei socket_bind(): '.socket_strerror(socket_last_error()); 
} 

if ((socket_listen($master)) === false) 
{ 
  echo 'Fehler bei socket_listen(): '.socket_strerror(socket_last_error()); 
} 

$sockets = array($master); 
while (true) 
{ 
  $changed_sockets = $sockets; 
  socket_select($changed_sockets,null,null,null); 
   
  foreach($changed_sockets as $socket) 
  { 
    if ($socket == $master) 
    { 
      $client = socket_accept($master); 
      $sockets[] = $client; 
    } 
    else 
    { 
      $input = socket_read($socket,1024,PHP_NORMAL_READ); 
      echo $input; 
    } 
  } 
} 

socket_close($client); 
socket_close($master); 
?>

Wo liegt mein Fehler?