我有一个套接字客户端,可以从服务器读取数据 .
但是,只要没有剩余数据可供读取,它就不会离开do..while循环?为什么会这样?谢谢
while (true)
{
$data_old=$data;
$data = file_get_contents("userInput.txt");
if($data_old != $data)
{
socket_write($socket, $data, strlen($data));
do
{
$line =@socket_read($socket,2048);
echo $line. "\n";
}
while($line != "");
}
}
2 回答
我相信你的问题是执行永远不会离开
while (true)
循环而不是while($line != "")
循环,试试这个:套接字是非阻塞的,您可能还希望在超时时使用socket_select() .
我用另一种方法解决了它 . 通过我的服务器在发送完所有数据后向客户端发送(“”)语句 .
然后,客户端将在收到语句后退出该循环 .