在Android中获取其他设备(Sever)的IP地址

时间:2016-08-03 05:12:26

标签: java android sockets

我正在尝试构建一个将两个或多个设备连接为客户端/服务器的android应用程序(使用套接字)。

但问题是客户端设备用户需要手动将服务器设备的IP地址与服务器连接。但是从客户端我不知道服务器IP地址。而且我不想手动输入它。

有没有办法获得使用相同应用程序并在同一网络上的服务器设备的IP地址(以编程方式)?

非常感谢任何帮助。 谢谢高级。

1 个答案:

答案 0 :(得分:0)

终于尝试了许多方法之后,我得到了一个解决方案

  

使用UDP广播进行网络发现(贷记到this documentation

(感谢@Fildor建议您实施此服务)。

解决方案

使用UDP数据包并进行广播!但是,这项技术并不是最佳选择,但是只要我们留在一个网络中,这就不会成为问题。 UDP数据包非常容易使用。

服务器实施

  • 在服务器上打开一个侦听UDP请求的套接字。
  • 建立一个处理UDP请求和响应的循环
  • 在循环内部,检查收到的UPD数据包以查看其是否有效
  • 仍然在循环内,将响应发送到
    的IP和端口 收到的数据包

客户实施

  • 在随机端口上打开套接字。

  • 尝试广播到默认广播地址(255.255.255.255)

  • 遍历所有计算机的网络接口并获取它们 广播地址

  • 将循环内的UDP数据包发送到接口的广播 地址

  • 等待回复

  • 收到回复后,请检查包装是否有效

  • 有效时,获取包裹的发件人IP地址;这是 服务器的IP地址

  • 关闭插座!我们不想在某人身上留下开放的随机端口 其他人的计算机