Редактировать: Извините, случайно опубликован с заголовком для другого вопроса. Исправлено.
Привет, ребята,
Я использую PHP для подключения к локальному серверу сокетов C ++, чтобы поддерживать состояние между веб-приложением и парой демонов. Я могу отправлять данные на сервер сокетов, но не получать от него; он просто блокируется на socket_read()
и зависает бесконечно. Я забыл что-то глупое (например, символ NULL или другую комбинацию символов новой строки)? PHP ниже:
socket_connect($sock, $addr, $port);
socket_write($sock, 'Hello world');
$str = '';
while($resp = socket_read($sock, 1000))
$str .= $resp;
socket_close($sock);
die("Server said: {$str}");
Ниже показана соответствующая часть сервера сокетов (обратите внимание, что операторы <<
и >>
перегружены):
std::string data;
sock >> data;
sock << data << std::endl;
Где >>
звонит Socket::recv(std::string&)
и >>
звонит Socket::send(const std::string&)
.
Это нормально работает с (например) telnet, но PHP не хочет играть хорошо. Любые мысли / предложения приветствуются.