4

嗨,我是 android 编程新手。我基本上是在尝试连接到接入点并向其发送命令。通过 wifi 连接到它后,是否可以通过编程方式获取它的 IP 地址,以便我可以与它建立 http 连接?目前我知道我们可以获取设备IP,但不确定是否可以获取接入点IP。请帮忙。提前致谢。

4

3 回答 3

3
public static String getApIpAddr(Context context) {
    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    DhcpInfo dhcpInfo = wifiManager.getDhcpInfo();
    byte[] ipAddress = convert2Bytes(dhcpInfo.serverAddress);
    try {
        String apIpAddr = InetAddress.getByAddress(ipAddress).getHostAddress();
        return apIpAddr;
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }
    return null;
}

private static byte[] convert2Bytes(int hostAddress) {
    byte[] addressBytes = { (byte)(0xff & hostAddress),
            (byte)(0xff & (hostAddress >> 8)),
            (byte)(0xff & (hostAddress >> 16)),
            (byte)(0xff & (hostAddress >> 24)) };
    return addressBytes;
}
于 2015-07-09T05:08:01.470 回答
0

我正在使用它来获取 IP 地址

try {
           for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) 
               {
                    NetworkInterface intf = en.nextElement();       
                    for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses();enumIpAddr.hasMoreElements();) 
                      {
                        InetAddress inetAddress = enumIpAddr.nextElement();
                        if (!inetAddress.isLoopbackAddress())
                         { 
                         //My IP address
                               String Ip= inetAddress.getHostAddress().toString();

                         }   
                       }
                  }

            }
     catch (SocketException e) 
     { 
       Log.e("Error occurred  ", e.toString());
      }
于 2013-07-23T06:07:06.460 回答
0

我假设您的意思是设备连接到的接入点的外部(公共)IP 地址。如果是这样,是的,有一种简单的方法可以获取设备连接到的接入点的公共 IP 地址。只需在 Web 服务器上设置一个脚本,该脚本将回显连接到它的任何客户端的 IP 地址(类似于 www.whatismyip.com)。然后,您的设备只需向脚本发出 GET 请求,这将返回设备所连接的接入点的外部 IP。

于 2013-07-22T23:18:20.207 回答