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.
Wo liegt mein Fehler?
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?