我正在使用PHP连接到本地的C++套接字服务器,以在Web应用程序和一些守护进程之间保持状态。 我可以向套接字服务器发送数据,但无法从中接收; 它只会在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似乎不太友好。欢迎提出任何想法/建议。
socket_create
函数创建了$sock对象? - netcodersocket_create()
- 已经更新。我应该早点澄清,抱歉 - 这是在 *NIX 上。没有明显的错误;服务器本身工作正常(我可以使用 telnet 并按预期工作) - 只是 PHP 的socket_read()
无限期地挂起。套接字服务器只是我临时拼凑的,因为我找不到一个好的可用于工作的服务器(任何建议都将是很好的)。 - mway