Открываю на сервере сокет. Подключаюсь к нему через PUTTY Всё что делает скрипт на сервере логирую в файл. Ожидаю получить чат: на сервер приходит то, что я набрал в PUTTY; в PUTTY выводится то, что отправил сервер. На самом деле вижу: 1) При подключении сокет на сервере принимает строку "SSH-2.0-PuTTY_Release_0.76", т.е. подключение к сокету, в принципе, происходит. 2) Пытаюсь что-то набирать в окне PUTTY, жать ENTER, больше ни чего не передаётся. 3) Скрипт выполняет socket_write(), но в PYTTY ни чего не появляется. 4) Скрипт блокируется на socket_read() 5) Скрипт разблокируется и socket_read() возвращает пустую строку после закрытия окна PUTTY Кто может, объясните, что я не понимаю ? Заранее спасибо ! PHP: error_reporting(E_ALL); /////////записываем в файл ошибки///// set_error_handler('err_handler',E_ALL); function err_handler($errno, $errmsg, $filename, $linenum) { date_default_timezone_set('Europe/Moscow'); $err = "$errmsg = $filename = $linenum"; $text = date("H:i:s")." ".$err."\r\n"; $file_name=date("Y_m_d")."_error".".txt"; $fp = fopen($file_name, "a" ); fwrite($fp, $text); fclose($fp); } /////////записываем в файл результаты выполнения///// function log_to_file($text){ date_default_timezone_set('Europe/Moscow'); $text = date("H:i:s")." ".$text."\r\n"; $file_name=date("Y_m_d")."_log".".txt"; $fp = fopen($file_name, "a" ); fwrite($fp, $text); fclose($fp); } // Позволяет скрипту ожидать соединения бесконечно. set_time_limit(0); ///// $address = '185.26.121.226'; //le-control.ru $port = 8443; ///////создаём сокет if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) { log_to_file("socket_create() ПРОВАЛ: ". socket_strerror(socket_last_error())); } else{ log_to_file("socket_create() УСЕХ: ". socket_strerror(socket_last_error())); } if (socket_bind($sock, $address, $port) === false) { log_to_file( "socket_bind() ПРОВАЛ: ". socket_strerror(socket_last_error($sock)) ); exit; //если такой порт уже открыт, значи скрипт уже запущен, второй раз запускать не нужно } else{ log_to_file( "socket_bind() УСПЕХ: ". socket_strerror(socket_last_error($sock)) ); } if (socket_listen($sock, 5) === false) { log_to_file( "socket_listen() ПРОВАЛ: ". socket_strerror(socket_last_error($sock)) ); } else{ log_to_file( "socket_listen() УСПЕХ: ". socket_strerror(socket_last_error($sock)) ); } //////////////////////////////////////////////// ////ждём подключение в бесконечном цикле do { log_to_file("ПЕРЕД ВЫЗОВОМ socket_accept"); $msgsock = socket_accept($sock); if ($msgsock=== false) { log_to_file( "socket_accept() ПРОВАЛ ". socket_strerror(socket_last_error($sock)) ); break; } else { log_to_file( "socket_accept() УСПЕХ ". socket_strerror(socket_last_error($sock)) ); log_to_file( "////////////////////////////////////////////////"); } //устанавливаем не блокирующий режим socket_set_nonblock($msgsock); //устанавливаем таймаут чтения 10000uS socket_set_option($msgsock,SOL_SOCKET, SO_RCVTIMEO, array("sec"=>0, "usec"=>10000)); ////читаем и пишем в бесконечном цикле do { log_to_file( "ПЕРЕД ВЫЗОВОМ socket_read()" ); $buf = socket_read($msgsock, 2000, PHP_NORMAL_READ); if (false === $buf) { log_to_file( "socket_read(): ПРОВАЛ:". socket_strerror(socket_last_error($msgsock)) ); break; } else { log_to_file( "socket_read() УСПЕХ: buf = ".strlen($buf)." = ".$buf ); } usleep(10000); log_to_file( "ПЕРЕД ВЫЗОВОМ socket_write()" ); $msg = "SUCCESS!!!\r\n\r\n"; $result=socket_write($msgsock, $msg, strlen($msg)); if($result===false){ log_to_file( "socket_write() ПРОВАЛ: ". socket_strerror(socket_last_error($msgsock)) ); break; } else{ log_to_file( "socket_write() УСПЕХ: ". $result ); } } while (true); socket_close($msgsock); log_to_file( "ВЫШЛИ ИЗ ЦИКЛА ЧТЕНИЯ-ЗАПИСИ. ВЫПОЛНИЛИ socket_close(msgsock)" ); } while (true);