从 Android 应用程序自动查找本地网络上的服务器

Tha*_*mus 5 java rest android network-programming

我正在开发一个由服务器和 Android 应用程序组成的系统,它必须联系所述服务器。在应用程序中,当前可以指定服务器地址,但我们现在希望客户端自动查找本地网络上的服务器以使其更可用。我目前对这个问题的理解是,我可以向本地广播地址发送一条消息255.255.255.255,然后该消息将到达本地网络中的所有IP。到目前为止,我想出了以下内容:

try {
    DatagramSocket discoveryBroadcaster = new DatagramSocket();
    discoveryBroadcaster.send(new DatagramPacket(msg.getBytes(),msg.getBytes().length,
            InetAddress.getByName("255.255.255.255"),8000));
} 
catch (IOException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

我们通过 RESTful 接口与服务器进行通信。我希望我们发送的消息是 GET 请求,以便我们可以像其他所有内容一样将服务器上的响应作为端点实现。问题是我知道创建 GET 请求的唯一方法是通过类httpurlconnection,它首先需要一个目标 URL。因此,我的问题是:

  1. 是否可以将 GET 请求编写为字符串,然后将其发送到广播地址?
  2. 向广播地址发送 GET 请求是否有效?
  3. 上述是解决这个问题的正确或可行的方法吗?

IvB*_*nov 3

解决问题的一个好方法是让服务器和 Android 应用程序都遵循Zeroconf 协议

在服务器和 Android 应用程序中配置其中一种实现后,您将获得您正在寻找的服务器的 IP 地址。然后你就可以像平常一样发送http请求了。

这是一些关于在 android 中使用 Zeroconf 的好文章。