PHP-windows上的多播套接字服务器

PHP-windows上的多播套接字服务器,php,windows,sockets,multicast,Php,Windows,Sockets,Multicast,我已经看过了,没帮上忙。所以我发布了我的问题。 我正在尝试接收(和响应)多播消息(我是服务器) 我目前的代码是: ///helper函数 函数sock_err($socket,$n=0){ 如果($socket==false){ echo“$n-socket\u create()失败:原因:“.socket\u strerror(socket\u last\u error()); 出口(1); } echo“OK$n”; } //// $multicast_group='228.100.100.

我已经看过了,没帮上忙。所以我发布了我的问题。 我正在尝试接收(和响应)多播消息(我是服务器)

我目前的代码是:

///helper函数
函数sock_err($socket,$n=0){
如果($socket==false){
echo“$n-socket\u create()失败:原因:“.socket\u strerror(socket\u last\u error());
出口(1);
}
echo“OK$n”;
}
////
$multicast_group='228.100.100.100';
$host=“0.0.0.0”;
$port=22800;
echo“WS://$host:$port”//我在听
$socket=socket_create(AF_INET、SOCK_DGRAM、SOL_UDP)或die(“无法创建套接字”);
sock_err($socket,1)//(好的)
socket\u set\u选项($socket,IPPROTO\u IP,MCAST\u JOIN\u GROUP,['GROUP'=>$multicast\u GROUP]);
sock_err($socket,2)//(好的)
socket\u set\u选项($socket,IPPROTO\u IP,IP\u MULTICAST\u TTL,2);
sock_err($socket,3)//(好的)
$result=socket\u bind($socket,$host,$port)或die(“无法绑定到socket\n”);
sock_err($socket,4)//(好的)
如果(!defined('MSG_DONTWAIT')){define('MSG_DONTWAIT',0x20);}
while(true){
回显“等待数据…\n”;
//接收一些数据
$r=socket\u recvfrom($socket,$buf,512,常量('MSG\u DONTWAIT'),$remote\u ip,$remote\u port);
echo“$remote_ip:$remote_port--”$buf;
//将数据发送回客户端
socket\u sendto($socket,“OK”。$buf,100,0,$remote\u ip,$remote\u port);
}
这将产生:

PS >> php -f .\sock_so.php

WS://0.0.0.0:22800
OK 1
OK 2
OK 3
OK 4
Waiting data ...
PHP Warning:  socket_recvfrom(): unable to recvfrom [10045]: Operazione richiesta non supportata per il tipo di oggetto indicato.
 in C:\Users\Davide-Locale\Desktop\Socket_PHP\sock_so.php on line 39
PHP Stack trace:
PHP   1. {main}() C:\Users\Davide-Locale\Desktop\Socket_PHP\sock_so.php:0
PHP   2. socket_recvfrom() C:\Users\Davide-Locale\Desktop\Socket_PHP\sock_so.php:39

Warning: socket_recvfrom(): unable to recvfrom [10045]: Operazione richiesta non supportata per il tipo di oggetto indicato.
 in C:\Users\Davide-Locale\Desktop\Socket_PHP\sock_so.php on line 39

Call Stack:
    0.4055     404448   1. {main}() C:\Users\Davide-Locale\Desktop\Socket_PHP\sock_so.php:0
    0.4072     404640   2. socket_recvfrom() C:\Users\Davide-Locale\Desktop\Socket_PHP\sock_so.php:39


Variables in local scope (#1):
  $buf = NULL
  $host = '0.0.0.0'
  $multicast_group = '228.100.100.100'
  $port = 22800
  $r = *uninitialized*
  $remote_ip = NULL
  $remote_port = NULL
  $result = TRUE
  $socket = resource(4) of type (Socket)

 :  --
PS wireshark从服务器查找数据。 以下是数据包转储:

0000   01 00 5e 64 64 64 00 50 b6 1b a7 5d 08 00 45 00   ..^ddd.P...]..E.
0010   00 23 ad bc 00 00 01 11 fa 97 c0 a8 08 05 e4 64   .#.............d
0020   64 64 59 10 59 10 00 0f 7e ea 72 65 71 75 65 73   ddY.Y...~.reques
0030   74 00 00 00 00 00 00 00 00 00 00 00               t...........