Чтение данных из сокета

agx

Программер :-)
Чтение данных из сокета

Создаю в PHP-сценарии сокетное соединение с сервером (написан на Java), передаю через сокет строку - на сервер приходят данные. Приняв данные, отправляю клиенту ответ, который в сценарии читается следующим образом:
PHP:
$out=socket_read($socket,1024);
if ($out===false)
{
	echo 'FALSE';
}
else if (empty($out))
{
	echo 'EMPTY';
}
else
{
	echo $out;
}
Сценарий зависает, похоже, socket_read просто блокирует поток. Как избежать такой блокировки? И самое главное, как правильно прочитать данные из сокета?? В ответ должна приходить строка, завершенная "\r\n\". Телнетом проверял - все работает.
 

whirlwind

TDD infected, paranoid
[m]socket_read[/m]

Optional type parameter is a named constant:


PHP_BINARY_READ - use the system recv() function. Safe for reading binary data. (Default in PHP >= 4.1.0)

PHP_NORMAL_READ - reading stops at \n or \r. (Default in PHP <= 4.0.6)

?
 

agx

Программер :-)
.whirlwind
По умолчанию стоит первый. С ним выходит описанная проблема. Если прописать второй, то сценарий выводит FALSE.

-~{}~ 03.10.06 15:23:

Правда, при этом не блокируется. :)
 

agx

Программер :-)
При этом вместо ошибки выводит, что операция, типа, успешно завершена.

-~{}~ 03.10.06 15:30:

whirlwind
Я их перечитал, но яснее от этого ничего не стало. Как я понимаю, поток долен заблокироваться и ждать прихода данных, завершенных "\r\n". Почему он меня сразу выкидывает?
 
Сверху