用PHP接收多播数据

问题描述

所以我一直在尝试这一点,但我不知道哪里出了问题。我看过很多与此相关的文章和教程,但我没有运气。

以下是代码,它仅返回错误代码11资源当前不可用。

//  echo PHPinfo();
        $from = "239.255.73.100";
        $port = 1500;
        if(!($socket=socket_create(AF_INET,SOCK_DGRAM,SOL_UDP)))
        {
            $errorcode=socket_last_error();
            $errormsg=socket_strerror($errorcode);
            die("Couldn't create socket: [$errorcode] $errormsg \n");
        }
        echo "Socket Created <br>";
        //flush_buffers();

        if(!socket_set_block($socket)){
            $errorcode=socket_last_error();
            $errormsg=socket_strerror($errorcode);
            die("Couldn't nonblock socket : [$errorcode] $errormsg \n");
        }

/*      if(!socket_bind($socket,"0.0.0.0",1500)){
            $errorcode = socket_last_error();
            $errormsg = socket_strerror($errorcode);
            die("Couldn't bind socket: [$errorcode] $errormsg \n");
        }*/

//      echo "socket bount";
        //flush_buffers();
        socket_set_option($socket,SOL_SOCKET,SO_REUSEPORT,1);
        socket_set_option($socket,SO_RCVTIMEO,array("sec"=>1,"usec"=>0));
//      socket_set_option($socket,SO_SNDTIMEO,"usec"=>100));
        $stat=socket_set_option($socket,MCAST_JOIN_GROUP,array("group"=>"239.255.73.100","interface"=>"eth0"));//,"source"=>$from));
        echo $stat;
//      echo "Joined Group";
//          die("Cant Join Group socket_last_error() socket_strerror(socket_last_error())");


//      if (!socket_set_option($socket,IP_MULTICAST_TTL,2)){
//          die("can't set TTL". socket_last_error()." - ".socket_strerror(socket_last_error()));
//          echo "TTL set to 2";
//      }
        if(!socket_bind($socket,'0.0.0.0',$port)){
            die("Couldn't bind socket: [socket_last_error()]");
        } 

        echo "socket bound <br>";
        if(!socket_connect($socket,$from,$port)){
            die("Can't Connect" . socket_last_error(). " ". socket_strerror(socket_last_error()));
        }else {
            echo "socket connected <br>";
        }
//      socket_recvfrom ()

        try{
            for($i=0;$i<=5;$i++){
                    
                if(is_string(socket_recv($socket,$r,241,0)))
                {
                    echo $r;

                //  echo(socket_last_error()." &  ".socket_strerror(socket_last_error()). "<br>");
                }
                echo (socket_last_error() ." ". socket_strerror(socket_last_error())."<br>");
        
//              echo $r;
            }
        }
        finally{
            socket_close($socket);
        }
    ?>

如果有人可以指出我搞砸的地方,那将非常有帮助。

注意:具有相同设置的python脚本能够接收数据。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...