
08.03.2009, 12:43
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
С нами:
9497186
Репутация:
1304
|
|
imajo.ati Смотря как именно реализовано. Следующий код у меня нормально работает и на винде и на никсах
PHP код:
#!/usr/local/bin/php
<?php
$port = 9050;
$sock = stream_socket_server('tcp://0.0.0.0:'.intval($port), $errno, $errstr);
$clients = array($sock);
while (true)
{
$read = $clients;
if (stream_select($read, $write = NULL, $except = NULL, 5) < 1)
continue;
if (in_array($sock, $read))
{
$clients[] = $newsock = stream_socket_accept($sock);
fwrite($newsock, "Welcome to server\r\n");
$ip = stream_socket_get_name($newsock, true);
echo "New client connected: {$ip}\n";
$key = array_search($sock, $read);
unset($read[$key]);
}
foreach ($read as $read_sock)
{
$data = @fgets($read_sock, 1024);
if ($data === false)
{
$key = array_search($read_sock, $clients);
unset($clients[$key]);
echo "client disconnected.\n";
continue;
}
$data = trim($data);
if (!empty($data)) {
foreach ($clients as $send_sock)
{
if ($send_sock == $sock || $send_sock == $read_sock)
continue;
fwrite($send_sock, $data."\r\n");
}
}
}
}
fclose($sock);
?>
|
|
|