我正面临一个奇怪的问题。使用PHP作为C++服务器的套接字客户端
我写了一个C++中的小型服务器,它以二进制格式将对象存储在一个文件中。
我用telnet成功测试过它。
telnet 127.0.0.1 1234
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
store 1 1 5 1
store 1 1 5 2
服务器上的输出是现在
Command : store 1 1 5 1
Command : store 1 1 5 2
因为我们要使用PHP来存储这些信息,我写了一个小PHP脚本,将派遣10个命令到我们的服务器。
<?php
$socket = socket_create(AF_INET,SOCK_STREAM,0);
socket_connect($socket,"127.0.0.1",1234);
for($i = 0;$i < 10;$i++){
$command = "store 1 $i 5 1\r\n";
echo $command;
socket_write($socket,$command,strlen($command));
}
socket_close($socket);
?>
的问题是,来自服务器的输出是现在:
Command : store 1 0 5 1store 1 1 5 1store 1 2 5 1store 1 3 5 1store 1 4 5 1store 1 5 5 1store 1 6 5 1store 1 7 5 1store 1 8 5 1store 1 9 5 1
的\ r \ n不认可。在四处搜寻后,我发现通过在socket_write函数后添加一个usleep(10000),它实际上可以工作。
我试图避免使用此解决方案,所以我要提问:
为什么usleep修复它? 如何在不休眠的情况下做到这一点?
感谢您的阅读!