手机APP和设备一般都采用client模式,链接到服务器的相应端口;
因此需要在一个公网IP上实现两个端口的监听,一个给到手机连接,一个给到断路器连接;
手机连接过来时,网关不给任何反馈,等待手机端发各种请求过来;
设备连接过来时,因为设备不主动发送报文,网关不知道设备地址,因此设备一链接,网关即发送广播读地址报文请求,设备只要回复了就记录在设备清单中。
上图中
左边两个列表,一个是手机端接入,一个是断路器在线清单,后面是一个日志刷新;
后台不断地监听两个端口,接入连接请求,另外不断扫描已连接的socket,进行报文读写监听;
手机端可以发在线状态问询,问哪个装置在不在;可以对具体的设备发送数据询问,网关收到后如果该设备在线,就询问;收到报文返回手机,如果设备不在线就不管,也不用回复。
这样两边就连接起来了。
其中还有个公网IP的问题,因为手机和断路器都需要访问固定公网IP,但公司目前还没有,我采用了花生壳的免费的域名访问,免费版本的可以提供两个内网映射,正好一个给app,一个给断路器,不过注意下流量,一个月只有1个g的免费流量,测试够用了,
另外就是网关需要一直开着,我的都是测试过程,设备没超过10个,所以就拿了一台普通台式机,做好内网映射,打开网关;
还有就是因为这个台式机莫明重启,就又搞了上电自启动(bios设置),windows自动登录,登录后网关软件和花生壳映射随系统启动,网关服务随软件启动等等一些列的操作,就是问了重启后自动恢复网关在线;
目前还算正常在用,使用频度不高,月流量能用100m就算多了,大部分时间都没有100M