我在简单的服务器端套接字编程上阅读this example。我无法理解这个逻辑:
if (($msgsock = socket_accept($sock)) === false) {
echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
break;
}
从这里开始:
do {
if (($msgsock = socket_accept($sock)) === false) {
echo "socket_accept() failed: reason: " . socket_strerror(socket_last_error($sock)) . "\n";
break;
}
/* Send instructions. */
$msg = "\nWelcome to the PHP Test Server. \n" .
"To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
socket_write($msgsock, $msg, strlen($msg));
为什么要打破循环?我们不应该等待连接吗?
答案 0 :(得分:1)
调用accept
可能由于多种原因而失败,例如,如果它被信号中断或者套接字未处于侦听状态。根据错误,您可能希望执行不同的操作,但最简单的方法是停止尝试接受连接并退出程序。