2个协议层之间协作

workerman_udp

workerman建立了2个监听,一个http启用ssl,一个udp。

现在有这么一个需求,在不改动现有前段的情况下,前端访问https地址请求相关数据,后台程序收到用户的https的请求,通过服务器去发送udp新给另外一个设备请求信息,处理后再返回结果给https的请求。

如何才能做到这种流程。

另外后台可能和另外一个设备UDP通讯来回2次,如何让他线性完成整个流程,在我理解里,好像每次接收UDP数据都是另外一个线程在执行,不能和TCP一样长链等待。

如果用户多,请求多,不区分的话数据很乱,不知道那个数据归属哪个用户。

感谢!

2603 3 1
3个回答

walkor

php里发udp数据和接收返回类似下面的代码

$socket = stream_socket_client('udp://x.x.x.x:xx');
stream_socket_sendto($socket, $msg);
$result = stream_socket_recvfrom($socket, 65535);

workerman_udp

[attach]681[/attach]
@walkor 昨天忘记传图了,我先实验您回复的方法。。

  • workerman_udp 2017-07-03

    关键问题在服务器,回复的时候使用5000端口,我们进程发送是用5100

  • workerman_udp 2017-07-03

    如果多个用户一起发起https请求的时候,服务器2回复的数据就不知道是谁的了。服务器2操作不了。

walkor

$opts = array(
'socket' => array(
'bindto' => '本机ip:5000',
),
);
$context = stream_context_create($opts);
$socket = stream_socket_client('udp://x.x.x.x:xx', $errno, $errmsg, 0, $context);
stream_socket_sendto($socket, $msg);
$result = stream_socket_recvfrom($socket, 65535);
fclose($cocket);
作为udp客户端可以不用监听5000端口。如果服务端固定向5000端口返回数据,udp客户端绑定socket本机端口为5000就行。

  • 暂无评论
年代过于久远,无法发表回答
🔝