系统环境: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'));
});
}
// 。。。。。
tcp数据连在一起是正常的,所以在tcp之上要有一层通讯协议来分包,这也是为什么众多通讯协议存在的原因。
解决这个问题需要客户端能够从数据里把数据包区分开。
win下无法多进程,并且win下并发连接数一般不会超过256,生产环境最好用linux系统。
感谢老大这么迅速的回复。可惜客户端是固化的,而且也不会linux,看来暂时只好用sleep了。