Artik
Новичок
deamon, проблема
Запускаю демон, все работает нормально...
Открываю одно окно telnet доступа к демону пишу - вижу, работает отлично...
Открываю второе окно telnet - пишу, вижу и первым и вторым телнетом...
Перехожу на первый телнет - пишу - и не пишет некуда.
Где ошибка/недоработка?
И еще, как сделать что б когда кто то разрывает соединение то его что б удаляло с массива $clients ( unset($clients[$msgsock]); ) и писало всем что вышел такойто айпи...
Что б удаляло с массива и писало это не проблема, но вот что б определяло кто разорвал соединение - незнаю...
PHP:
<?
///////////////////////
$ip = '10.0.0.60';
$port = 9876;
///////////////////////
set_time_limit(20);
error_reporting (E_ALL);
for ($i=0;$i<50;$i++){
echo "<!-- -->";
}
flush();
echo "Go...<br>";
flush();
$listen = socket_create (AF_INET, SOCK_STREAM, 0);
socket_set_option($listen, SOL_SOCKET, SO_REUSEADDR, 1);
$ret = socket_bind ($listen, $ip, $port);
$ret = socket_listen ($listen, 5);
$clients = Array();
while (1==1)
{
$set = array_merge($listen, $clients);
if (socket_select($set, $set_w = NULL, $set_e = NULL, 1, 0) > 0)
{
foreach ($set as $sock)
{
if ($sock == $listen)
{
if (($msgsock = socket_accept($listen)) < 0)
{
}
else
{
$clients[$msgsock] = $msgsock;
socket_getpeername($msgsock, $addr);
foreach ($clients as $tsock)
{
$txt = "$addr conected...\n";
socket_write($tsock, $txt);
}
echo $txt . "<br>";
flush();
}
}
}
$read = socket_read($msgsock, 1024);
$txt = "$addr $read\n";
foreach ($clients as $tsock)
{
socket_write($tsock, $txt);
}
echo $txt . "<br>";
flush();
}
}
?>
Открываю одно окно telnet доступа к демону пишу - вижу, работает отлично...
Открываю второе окно telnet - пишу, вижу и первым и вторым телнетом...
Перехожу на первый телнет - пишу - и не пишет некуда.
Где ошибка/недоработка?
И еще, как сделать что б когда кто то разрывает соединение то его что б удаляло с массива $clients ( unset($clients[$msgsock]); ) и писало всем что вышел такойто айпи...
Что б удаляло с массива и писало это не проблема, но вот что б определяло кто разорвал соединение - незнаю...

