PHP上的UDP服务器,端口出现问题

时间:2017-02-17 13:56:36

标签: php sockets server udp port

我试图在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);

1 个答案:

答案 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)))