我想使用ZeroMQ在同一个wifi网络中发现所有Android设备的IP和端口?
我的应用程序基本上连接相同的wifi网络中的所有设备(不需要互联网)和消息。一旦ip和端口,我知道我成功发送消息,但如何知道所有设备互联网协议(IP)使用ZeroMQ?
答案 0 :(得分:3)
A部分
必须管理每个IEEE 802.x CSMA / CD网络“冲突域”(wifi AP / SSID就是这样)才能正常工作。因此, Address Resolution Protocol [ARP]
将帮助您完成查找所有ISO-OSI-Layer-3 IP地址的任务。 Wifi接入点[AP]主机是所有实时设备注册和握手的主机,是开始的选择。
HG520i> ip arp status
received 54205 badtype 0 bogus addr 0 reqst in 12105 replies 196 reqst out 14301
cache hit 63152696 (24%), cache miss 19455672 (23%)
IP-addr Type Time Addr stat iface
192.168.0.230 10 Mb Ethernet 290 00:15:af:e6:b1:79 41 enif0
192.168.0.62 10 Mb Ethernet 300 00:0c:29:98:d4:3b 41 enif0
192.168.0.55 10 Mb Ethernet 300 00:27:0e:07:c5:9e 41 enif0
192.168.0.255 10 Mb Ethernet 0 ff:ff:ff:ff:ff:ff 43 NULL
num of arp entries= 4
B部分)
扫描所有已知IP主机上的所有端口是第二个问题的愚蠢暴力方法。
扫描一部分“合理”的子集可以节省您在同行识别上的时间和精力。
使用更智能,更活跃的“可见性自我广告政策”将为您节省更多。
决定,是否将使用单独的被动扫描,中央/分布式代理辅助扫描或主动自我广告策略来构建和维护实时记录。邻近的主机注册。
ZeroMQ 本身为智能解决方案带来了大量功能,而愚蠢的解决方案必须等到完全成熟的ZeroMQ服务准备就绪。低水平的L2 / L3检查必须在ZeroMQ首先.bind()
/ .connect()
毋庸置疑,未协调的CSMA / CD网络并不能保证所有L2可见主机都具有“兼容”L3-ip-adddress(属于/具有相同的L3-ip-network地址)。 / p>
因此,如果没有真正的低级嗅探器,您永远不会知道所有IP地址。