win下GatewayWorker向同一客户端连续发送的问题

nimda

系统环境:windows + php5.6

需要是这样的,服务端要定时向客户端发送采集指令,客户端自动回复,如果是每个时间点向客户端只发送一条
指令,这毫无问题。
问题是:服务端需要向客户端连续发送两条指令,可是客户端接收出现连包问题,无法回复。如果在定时器内用延时发送,却不是理想方法。win下无法使用gateway多进程,这如何破?

翻了几天的手册,没找到解决方案,不知哪位侠客可出手相救?代码如下:

class Events
{

// 进程启动时设置个定时器。Events中支持onWorkerStart需要Gateway版本>=2.0.4
    public static function onWorkerStart($worker)
    {
        Timer::add(10, function(){
        Gateway::sendToAll(hex2bin('01030000000AC5CD'));
        Gateway::sendToAll(hex2bin('02030000000AC5FE'));
        Gateway::sendToAll(hex2bin('03030000000AC42F'));
        });
    }

  // 。。。。。
2611 3 0
3个回答

walkor

tcp数据连在一起是正常的,所以在tcp之上要有一层通讯协议来分包,这也是为什么众多通讯协议存在的原因。
解决这个问题需要客户端能够从数据里把数据包区分开。

  • 暂无评论
walkor

win下无法多进程,并且win下并发连接数一般不会超过256,生产环境最好用linux系统。

  • 暂无评论
nimda

感谢老大这么迅速的回复。可惜客户端是固化的,而且也不会linux,看来暂时只好用sleep了。

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