douyan1244 2017-02-17 13:56
浏览 299
已采纳

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

Im trying to create a simple UDP server on php which initially will be receiving some dummy data. I've tried following some tutorials and now i can create and bind a socket. However when im using socket_recvfrom for some reason the page just keeps loading and when i refresh it again, the port is taken and i cant bind the socket in that port anymore. below is my code and any answer is welcomed. `

if(!($sock=socket_create(AF_INET, SOCK_DGRAM, 0)))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);

die("Couldnt create socket: [$errorcode] $errormsg 
");
}
echo "socket create OK";
if (!socket_bind($sock,"localhost",8880))
{
$errorcode = socket_last_error();
$errormsg = socket_strerror($errorcode);

die("Couldnt bind socket: [$errorcode] $errormsg 
");
 }
echo "socket bind OK";

// while(1)
// {
$remote_ip ='';
$remote_port=0;
echo "waiting for data ... 
";
$r=socket_recvfrom($sock, $buf, 512 , 0 , $remote_ip , $remote_port);
echo "$remote_ip : $remote_port --". $buf;
// }

// socket_close($sock);
  • 写回答

1条回答 默认 最新

  • dsaf415212 2017-08-06 12:21
    关注

    I ended up using this function:

    if (false ===($tcpsock = stream_socket_server("tcp://127.0.0.1:8876",$errorno,$errstr))) echo"tcp socket failed : $errstr($errorno) ";
    if(false ===($connection = stream_socket_accept($tcpsock))) echo "tcp accept failed! "; else echo "tcp accepted";

    And if you want a UDP socket, you just have to :stream_socket_server("udp://127.0.0.1:8876",$errorno,$errstr)))

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口