webman
Новичок
php сокеты и flash
пытаюсь написать сокет сервер на пхп(чат), клиентская часть - флешка
проблема такая, запускаем скрипт, запускаем флешку, отправляем первое сообщение, отправляется... отправляем второе сообщение, не приходит обратно... запускаем во второе окошко флешку, приходит сообщение из первого окна которое не отобразилось, отправляем сообщение,возвращается, а после этого все... тишина...
подскажите где не прав, просто не могу понять в чем проблема
ссылка на архив флэшка+пхп
пытаюсь написать сокет сервер на пхп(чат), клиентская часть - флешка
проблема такая, запускаем скрипт, запускаем флешку, отправляем первое сообщение, отправляется... отправляем второе сообщение, не приходит обратно... запускаем во второе окошко флешку, приходит сообщение из первого окна которое не отобразилось, отправляем сообщение,возвращается, а после этого все... тишина...
подскажите где не прав, просто не могу понять в чем проблема
PHP:
<?php
$address = '127.0.0.1';
$port = 5190;
$max_clients = 100;
// массив клиентов
$client = Array();
//массив ожидания чтения из сокетов
$read=Array();
// создаем сокет
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
// связываем имя с сокетом
socket_bind($sock, $address, $port) or die('Could not bind to address');
// прослушиваем соединения
socket_listen($sock);
//зацикливаем соединение
while (true) {
//принемаем соединения на сокете и пишем в массив ресурсы
for ($i = 0; $i < $max_clients; $i++){
if ((!isset($client[$i]['sock']))||($client[$i]['sock'] == null)){
$client[$i]['sock'] = socket_accept($sock);
break;
}
}
//ждем сообщения на сокетах
for($i=0;$i<$max_clients; $i++){
if((isset($client[$i]['sock']))&&($client[$i]['sock'] != null)){
if (false === ($buf = socket_read($client[$i]['sock'], 2048, PHP_NORMAL_READ))) {
echo "socket_read() failed: reason: " . socket_strerror($ret) . "\n";
break 3;
}
$buf=trim($buf);
if ($buf == 'quit') {
socket_close($client[$i]['sock']);
unset($client[$i]);
}
if ($buf == 'shutdown') {
break 2;
}
if($buf!=""){
$talkback = "[".date("h:m")."] $buf<br>".chr(0);
echo $talkback;
for($j=0;$j<$max_clients; $j++){
if((isset($client[$j]))&&($client[$j]['sock'] != null)){
$stat=socket_write($client[$j]['sock'], $talkback, strlen($talkback));
while($stat==false){
socket_write($client[$j]['sock'], $talkback, strlen($talkback));
}
}
}
}
}
}
}
//закрываем главный сокет
socket_close($sock);
?>