我正在用PHP编写NAT遍历节点,我希望能够在连接关闭之前发送数据。我需要脚本在阻塞之前发送字符串,同时等待套接字上的数据。似乎echo写入一个缓冲区,该缓冲区在脚本退出或死亡时被刷新并批量发送。这是我目前的代码:
$sktSocket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
$bSuccess = socket_bind($sktSocket, $_SERVER['SERVER_ADDR'], $sPass);
if($bSuccess){
echo "wait for connection";
flush();
ob_flush();
$remote_ip = "";
$remote_port = "";
$r = socket_recvfrom($sktSocket, $buf, 512, MSG_WAITALL, $remote_ip, $remote_port);
//socket_sendto($sktSocket, "OK " . $buf , 100 , 0 , $remote_ip , $remote_port);
socket_close($sktSocket);
}
我已经尝试过flush和ob_flush,但那些没有做我需要的。
在阻塞调用(socket_recvfrom)之前是否有一种方法可以写入输出流,以便发送数据然后阻塞?