Программирование сокетов PHP socket_read + socket_write () - PullRequest
1 голос
/ 21 июня 2011

У меня есть приложение сокета PHP, которое подключается к серверу и отправляет некоторые данные,

Мне нужно расширить этот скрипт до отправить (записать) и прослушать назад для воспроизведения с сервера

я пытался использовать socket_read() после socket_write()

но он вешает скрипт.

есть идеи по этому поводу?

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

socket_read() блокируется. Он зависает, пока есть что почитать. Кроме того, вам нужно будет вызывать его несколько раз, пока он не вернет пустую строку (конкатенируя то, что вы получили), и только тогда вы дадите полный ответ.

Вот как работают операции с сокетами:

socket_write($socket, 'request');
$response = '';
do {
    $buffer = socket_read($socket, $number_of_bytes_to_read);
    $response .= $buffer;
} while (!empty($buffer));
1 голос
/ 21 июня 2011

для обхода проблемы добавьте sleep(1) после записи, затем начните чтение.

Сначала также проверьте возвращаемое значение операции записи . Возвращает количество записанных байтов, FALSE при ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...