0

我正在尝试通过套接字连接 2 个设备,以便它们可以交换数据。它们还通过 wifi 热点连接。我正在使用服务。

设备 1 是热点(实现 ServerSocket 的地方),设备 2 是连接到它的热点(实现 Socket 的地方)。我做了一些研究,我能够得到他们每个人的 ip(但根据他们自己的班级计算)。但是为了让我创建客户端套接字,我需要另一个类中主机(用作热点的电话)的 IP 地址。我无法在服务器端获取它,因为这部分代码不会被执行,因为我使用一部手机创建热点网络,另一部连接到它。

我知道通常网络共享设备的 IP 地址通常是相同的,但我不能相信这一点,因为我必须确保它适用于所有手机。

那么,如何在客户端(连接到该热点的电话)服务中获取服务器(热点主机)的 IP 地址?

4

2 回答 2

1

在客户端,您可以使用 dhcp.gateway 获取服务器端(创建热点的人)的 IP 地址。

 private final WifiManager manager;
 private final DhcpInfo dhcp;
 private InetAddress getServerIP() {
    manager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    dhcp = manager.getDhcpInfo();
    final String address = Formatter.formatIpAddress(dhcp.gateway);// gateway - 
    default gateway IP address
    InetAddress serverIP = null;
    try {
        serverIP  = InetAddress.getByName(address);
        if(mDebug)
        Log.i("Server IP ","" + serverIP.toString());


    } catch (Exception e) {
        if(mDebug)
        Log.e("Cannot find server's IP. Error  ","" + e.toString());
    }

    return serverIP ;
}
于 2018-10-03T11:48:33.703 回答
-1

确定网关的ip。以编程方式获取网关和子网掩码详细信息。使用WifiManager.getDhcpInfo().gateway .

于 2016-08-03T14:46:25.613 回答