1

我使用套接字将两个 Android 平板电脑连接为使用同一路由器的 wifi 网络。一个是服务器,另一个是客户端。

问题是每次我想连接客户端和服务器平板电脑时,我都必须在客户端平板电脑中输入服务器平板电脑的 IP 地址。有没有办法避免这种情况?

在联网之前,我还没有弄清楚如何将服务器 IP 地址发送到客户端平板电脑。

我希望有一种方法可以将两个平板电脑联网,而无需知道服务器平板电脑的 IP 地址。

一个想法是让服务器平板电脑连接到用 php 编写的网站,让网站获取 IP 地址并将其存储在数据库中。接下来我会让客户端平板电脑从该网站获取 IP 地址。然后具有服务器 IP 的客户端平板电脑将能够建立连接。所有这些都将避免用户在每次想要连接时都必须知道 IP 并输入它。

我相信其他人以前做过类似的事情并解决了这个问题。有任何想法吗?

4

3 回答 3

0

如果Android服务器无法分配固定的公网IP地址,也就是说它使用DHCP获取LAN IP,它可以向DHCP服务器请求特定的IP地址(也许你需要对路由器进行一些配置),也就是这里的路由器。

另一种方法是使用反向地址解析协议 (RARP),您可以使用该协议向交换机询问具有特定 MAC 地址的主机的 IP 地址。您的服务器 Android 手机的 MAC 地址是固定的。

这些只是理论上可行的。您需要查看在 Android 手机中调用的 API。

于 2013-01-31T00:47:16.963 回答
0

我有这种安卓应用程序。我所做的是使用多播网络。在此处查看示例

由于组播网络使用组 IP,这是我的建议

  • 服务器平板电脑将充当接收器
  • 客户端将成为发送者(他们会将本地 IP 发送给接收者)
于 2013-01-31T01:08:16.200 回答
0

连接后,您可以使用新客户端检索套接字地址

( 套接字客户端 = server.accept(); )

        client.getLocalAddress().toString()                //ip server
        client.getRemoteSocketAddress().toString()         //ip client

并将它们存储在 HashMap 列表中,例如:

        String name=client.toString();
        name=name.substring(name.indexOf("/")+1,name.indexOf(","));
        List<String> index = new ArrayList<String>(list.keySet());
        if(index.indexOf(name)<0)
        list.put(name,client.getRemoteSocketAddress().toString());
于 2020-05-09T12:06:06.580 回答