如果没有数据可供读取,
当数据之前已经被读取时,试图让我的socket_read()阻塞。我需要它等待$spawn套接字有新数据(可以相等,即希望它在接收"FE"时读取两次),然后再发送。
当没有任何新数据时,如何阻止它
$i=0;
while ($i<10){
//Read and Parse Client input
$input = strtoupper(bin2hex(socket_read($spawn, 1)));
echo $input . "n";
//Deal with requests
if ($input == "FE"){ //Server Ping
socket_write($spawn, $ping_packet);
echo "Ping Attempt n";
} elseif ($input == "02"){ //Handshake Request
socket_write($spawn, $handshake_packet);
echo "Handshake Attempt n";
} elseif($input == "01"){ //Login Request
socket_write($spawn, $kick_packet);
echo "Login Attempt n";
}
$i++;
}
您可以使用socket_set_block将套接字设置为阻塞。有关如何同时处理大量套接字的信息,请参阅socket_select。
socket_read将返回一个空字符串。要进行阻塞读取,请使用带有标志MSG_WAITALL的socket_recv。