我正在创建一个需要与另一台设备上的其他应用程序通信的应用程序。唯一的问题是来自设备的IP地址并不总是相同的。我想客户端在特定端口上找到服务器,但是如何在网络上找到打开此端口的设备而不必在客户端进入服务器的ip?我找到了Android的NsdManager,但它可以从API级别16开始工作。我正在用10级开发。
提前致谢!
答案 0 :(得分:1)
您可以使用零配置网络来帮助您解决问题。请查看以下网站 - http://www.multicastdns.org/和http://en.wikipedia.org/wiki/Zero-configuration_networking。
您也可以使用MDSND,请查看Bonjour implementation on Android以获取更多信息。
答案 1 :(得分:1)
我很抱歉没有回复。
我通过向所有设备(255.255.255.255)广播UDP数据包解决了这个问题。在指定端口监听的Al设备将响应,从而客户端现在将知道服务器的IP地址。 TCP用于进一步的通信。
答案 2 :(得分:0)
这应该不会太难。
有问题的私人IP地址格式应为192.168.1.x
(x介于1和255之间)
通常情况下,我认为这个数字是按顺序分配的,所以首先我会检查是否
192.168.1.1
如果不是那个,
然后我会检查
192.168.1.2
然后
192.168.1.3
然后
etc.
答案 3 :(得分:0)
广播在大多数情况下都有效,下面的链接显示了如何从代码中执行此操作: [Send Broadcast UDP but not receive it on other Android devices
但也有例外:
有些手机没有正确接收广播包(例如HTC),我通过HTC手机广播解决了这个问题,一旦其他手机接收到包裹,就向HTC手机发送udp包(不通过广播)< / p>
如果其中一个设备充当热点,广播似乎根本不起作用,在这种情况下,其他设备可以尝试使用网关ip(这是hotsport设备的IP)< / p>