我正在尝试创建一个包含一个交换JSON消息传递系统的程序,其中有一个A或中央设备,我们知道它的静态IP和一个或多个B设备,它们具有动态和不稳定的IP
我建议的交流不仅应该从B到A(包括从B到不从答案)可行,而且应该从A到B是可行的,并且结果相同。
我的消息传递技能仅限于ZMQ,所以我考虑了两种可能的情况:
在第一个基于PUSH-PULL套接字的基础上,A具有一个与B相同的PULL套接字和另一个PUSH套接字。作为心跳信号,B每X秒/分钟发送一次JSON,说“这是我的IP”。该信息在一个时间范围内被认为是可靠的,并且一方面,我们解决了从B到A的通信(相当容易),另一方面,B保存了一个IP,以最小的可靠性尝试与之联系。
关于第二个,我考虑过REQ-REP套接字。在此配置中,A具有一个RES套接字,该套接字能够接收和响应来自B的请求,而RES套接字又具有一个关联的REQ套接字,用于执行请求。同样,从B到A的通信很简单。相反,想法是让B发出REQ请求作为心跳信号(例如,每半秒),问“我有东西吗?我有东西吗?”在网络级别上,可靠性比前一种可靠得多,但效率却低得多(我完全忽略了此类呼叫的实际成本)。
首先有更好的建议吗?我想强调的是,我使用ZMQ是因为它是我所知道的,但是,如果有更好的工具/更适合这种情况,我将很高兴知道和/或与他们合作。我知道Google有一种适用于Android的API,但是我并不是在专门谈论智能手机。
答案 0 :(得分:0)
请记住,PUSHes或REQuests或其他完全独立于绑定或连接的一端的一端。因此,具有稳定IP地址的设备可以绑定其zmq套接字,其他所有东西都将其zmq套接字连接到该IP地址,但是您可以选择将PUSH或PULL或REQ或REP的一端作为终端
答案 1 :(得分:0)
bind()
个PUB插座和一个ROUTER插座。connect()
到已知IP。