我试图在php上创建一个简单的UDP服务器,最初将接收一些虚拟数据。我已经尝试过一些教程,现在我可以创建并绑定套接字。但是当我因某种原因使用socket_recvfrom
时,页面只是继续加载,当我再次刷新它时,端口被占用,我不能再绑定该端口中的套接字。以下是我的代码,欢迎任何答案。
`
if(!($sock=socket_create(AF_INET, SOCK_DGRAM, 0)))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Couldnt create socket: [$errorcode] $errormsg \n");
}
echo "socket create OK";
if (!socket_bind($sock,"localhost",8880))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);
die("Couldnt bind socket: [$errorcode] $errormsg \n");
}
echo "socket bind OK";
// while(1)
// {
$remote_ip ='';
$remote_port=0;
echo "waiting for data ... \n";
$r=socket_recvfrom($sock, $buf, 512 , 0 , $remote_ip , $remote_port);
echo "$remote_ip : $remote_port --". $buf;
// }
// socket_close($sock);
答案 0 :(得分:0)
我最终使用了这个功能:
if (false ===($tcpsock = stream_socket_server("tcp://127.0.0.1:8876",$errorno,$errstr)))
echo"tcp socket failed : $errstr($errorno)\n";
if(false ===($connection = stream_socket_accept($tcpsock)))
echo "tcp accept failed!\n";
else echo "tcp accepted";
如果你想要一个UDP套接字,你只需要:stream_socket_server("udp://127.0.0.1:8876",$errorno,$errstr)))