我正在做一个简单的学校项目:一个带有摄像机的树莓派PI,该摄像机应该连接到android应用程序以观看安全录像。
服务器在Rasberry Pi上运行,Android应用程序连接到该服务器(在本地网络上)。但是,它必须易于使用和设置,因此首次运行时,该应用程序必须“发现” Raspberry Pi并连接到它。这就是我现在的做法:
首先,我找到运行该应用的设备所使用的IP地址,如下所示:
Formatter.formatIpAddress(((WifiManager) getSystemService(WIFI_SERVICE)).getConnectionInfo().getIpAddress());
这将返回IP地址。让我们现在使用192.168.1.50
。
然后,我通过正则表达式删除了最后一部分,因此我仍然使用192.168.1.
。
然后,我将建立一个包含253个线程的固定线程池,并尝试尝试连接到192.168.1.2
-192.168.1.254
范围内的每个IP地址上的套接字。
在小型网络中一次最多只能连接250个设备,这很好用,但是如果是较大的网络(连接了更多设备,并且IP地址的范围可以是192.168.1.2
,该怎么办?到192.168.255.255
,甚至是10.0.0.0
-10.255.255.255
?可能的IP地址数量成倍增加,我认为在这里创建16,581,375个线程不是答案。
所以,我的问题是,有没有更好的方法来做到这一点?如果是,那是什么?