IlayVanse
Здравствуйте! Помогите, пожалуйста. Нашел пример клиента TCP:
PHP:
<?php echo «<h2>Соединение TCP/IP</h2>n«; /* Получаем порт сервиса WWW. */ $service_port = 1234; /* Получаем IP-адрес целевого хоста. */ $address = ‘0.0.0.0’; /* Создаём сокет TCP/IP. */ if ($socket === false) { echo «Не удалось выполнить socket_create(): причина: « . socket_strerror(socket_last_error()) . «n«; } else { echo «OK.n«; } echo «Пытаемся соединиться с ‘$address‘ на порту ‘$service_port‘…»; if ($result === false) { echo «Не удалось выполнить socket_connect().nПричина: ($result) « . socket_strerror(socket_last_error($socket)) . «n«; } else { echo «OK.n«; } $in = «helprn«; $out = »; echo «Отправляем HTTP-запрос HEAD…»; echo «OK.n«; echo «Читаем ответ:nn«; echo $out; } echo «Закрываем сокет…»; echo «OK.nn«; ?>Когда мне надо повторно отправить запрос и получить сразу же от сервера ответ, то ничего не приходит. Могу только первый раз отправить и получить.
Пример как я это пытаюсь сделать:PHP:
$in = «helprn«; $out = »; echo «Отправляем HTTP-запрос HEAD…»; echo «OK.n«; echo «Читаем ответ:nn«; echo $out; } $in = «helprn«; echo «Отправляем HTTP-запрос HEAD…»; echo «OK.n«; echo «Читаем ответ:nn«; echo $out; }В чем моя ошибка, как мне не один раз получать/отправлять на сервер?
ADSoft
может закрывать стоит сокеты и открывать заново после каждой отправки запроса и получения ответа?
acso
Гм, 5 секунд гугления говорят, как обслуживать сокеты: https://www.php.net/manual/ru/sockets.examples.php
Вы забыли про петлю. После выполнения кода он просто завершается.
IlayVanse
При каждом новом подключении, сервер создает как бы новую сессию. Вариант «каждый раз с новым сокетом» невозможен.
— Добавлено —Можете, пожалуйста, уточнить про «петлю»?
acso
Я про цикл. В Вашем коде выполнение происходит один раз и сокет закрывается. Вам же нужно сокет держать и проверять, есть ли новые данные.