有这么一个需求,监听一个UDP端口,UDP报文从不同的客户端发送过来, 收到报文后将报文转发到非发送者的其它UDP客户端那边
现在问题就在于怎么用服务端这个UDP接收的socket发送内容给不同的其它UDP客户端,workerman有封装方法这么做么,我看到的
connection->send() 都是发送消息回当前发送UDP报文过来的客户端
发到其它客户端这个估计有点难度,因为其它客户端可能在局域网里,udp又是无连接的,如果服务端到其它客户端没打通udp通道,基本无法给他发送的。 如果客户端是暴露在外网的,并且监听了udp端口,这种可以发。大概这样发,没测试过,你试下吧。
$client = stream_socket_client('udp://ip:port'); fwrite($client, $data);
感谢回复 我在问题中忽略了很多细节 客户端保活以及可达性都做了处理 以及发过来数据的客户端IP端口等进行了记录 这个可达性本身没问题 现在的问题重点是:
如何用workerman自身的监听UDP的进程本身发数据回给各个其它的客户端,C中有方法可以直接回给指定IP和端口的方法,没有注意到php中哪个方法可用,sendto方法视乎是最接近的,但是没看明白在哪个参数配置对方的IP和端口
我发的代码里,$client = stream_socket_client('udp://ip:port'); ip和port不就是ip和端口么?
发到其它客户端这个估计有点难度,因为其它客户端可能在局域网里,udp又是无连接的,如果服务端到其它客户端没打通udp通道,基本无法给他发送的。
如果客户端是暴露在外网的,并且监听了udp端口,这种可以发。大概这样发,没测试过,你试下吧。
感谢回复 我在问题中忽略了很多细节 客户端保活以及可达性都做了处理 以及发过来数据的客户端IP端口等进行了记录 这个可达性本身没问题 现在的问题重点是:
如何用workerman自身的监听UDP的进程本身发数据回给各个其它的客户端,C中有方法可以直接回给指定IP和端口的方法,没有注意到php中哪个方法可用,sendto方法视乎是最接近的,但是没看明白在哪个参数配置对方的IP和端口
我发的代码里,$client = stream_socket_client('udp://ip:port'); ip和port不就是ip和端口么?