Код (Text): <?php header('Content-Type: text/plain;'); //Мы будем выводить простой текст set_time_limit(0); //Скрипт должен работать постоянно ob_implicit_flush(); //Все echo должны сразу же отправляться клиенту $address = 'localhost'; //Адрес работы сервера $port = 11111; //Порт работы сервера (лучше какой-нибудь редкоиспользуемый) if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) { //AF_INET - семейство протоколов //SOCK_STREAM - тип сокета //SOL_TCP - протокол echo "Ошибка создания сокета"; } else { echo "Сокет создан\n"; } //Связываем дескриптор сокета с указанным адресом и портом if (($ret = socket_bind($sock, $address, $port)) < 0) { echo "Ошибка связи сокета с адресом и портом"; } else { echo "Сокет успешно связан с адресом и портом\n"; } //Начинаем прослушивание сокета (максимум 5 одновременных соединений) if (($ret = socket_listen($sock, 5)) < 0) { echo "Ошибка при попытке прослушивания сокета"; } else { echo "Ждём подключение клиента\n"; } do { //Принимаем соединение с сокетом if (($msgsock = socket_accept($sock)) < 0) { echo "Ошибка при старте соединений с сокетом"; } else { echo "Сокет готов к приёму сообщений\n"; } //Бесконечный цикл ожидания клиентов do { $msg = null; if (false === ($buf = socket_read($msgsock, 1024))) { echo "Ошибка при чтении сообщения от клиента"; } else { echo 'Сообщение от клиента: '.$buf."\n"; if ($buf == "<policy-file-request/>\0"){ $msg = "<?xml version=\"1.0\"?><cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"$port\" /></cross-domain-policy>\0"; // Crossdomain socket_write($msgsock, $msg, strlen($msg)); } echo json_encode($buf, JSON_UNESCAPED_UNICODE); } //Если клиент передал exit, то отключаем соединение if ($buf == 'exit') { socket_close($msgsock); break 2; } if ($msg != null) { echo "Сообщение от сервера: $msg\n"; } } while (($buf = socket_read($msgsock, 1024)) == true); } while (true); //Останавливаем работу с сокетом if (isset($sock)) { socket_close($sock); echo "Сокет успешно закрыт"; } ?> Пробую подключиться клиентом к серверу. Вот клиент отправил пакет на сервер Код (Text): _instance.writeUnsignedInt(packet.length + 4); _instance.writeUnsignedInt(Connection.id++); _instance.writeBytes(packet); _instance.flush(); _instance.pingTimer.reset(); _instance.pingTimer.start(); В клиенте вывожу значение пакета json enco-дом и выводит нормальную JSON строку Код (Text): {"type":10,"position":2,"shareable":false,"name":"HELLO","length":2,"bytesAvailable":0,"objectEncoding":3,"endian":"littleEndian"} Далее пробую выводить на сервере при помощи echo json_encode($buf, JSON_UNESCAPED_UNICODE); но получаю "\u0006\u0000\u0000\u0000\u0000\u0000\u0000\u0000\n\u0000" Очень нужна помощь, спасибо!
помощь в чем? что вы думаете вам должно вывести то? попробуйте просто вывести echo $buf и посмотрите что это
ну судя по всему там последовательность байт какая то не интерпретируемая в текст .. типа служебные символы с ASCI кодом меньше 32 и вообще зачем их выводить....