愿望:我想连接到套接字并每秒向客户端发送“正在运行”。
这当然是一个考验。
问题:仅当客户端发送数据时才会发送输出“正在运行”。似乎循环正在暂停等待客户端回写。
代码:
$socket = @socket_create_listen("12345");
while (true) {
$client = socket_accept($socket);
$msg = "\nHello"."\r\n".chr(0);
$length = strlen($msg);
socket_write($client, $msg,$length);
usleep(5);
while (true) {
$msg = 'running'."\r\n".chr(0);
$length = strlen($msg);
socket_write($client, $msg, $length);
sleep(1);
}
}
示例:上面的代码在我服务器上的一个文件中。如果我运行这个文件,然后使用 telnet 连接到我的服务器上的 12345 端口,telnet myip# 12345
我希望每秒都会在控制台中看到“正在运行”。相反,“运行”只写一次。如果我在控制台中输入某些内容(即向服务器写入数据),则会再次显示正在运行的内容。因此,当我向服务器发送内容时,只会将运行发送到控制台。
什么可能导致这种情况?
谢谢 JT