Android 我可以通过wifi获取连接到的接入点的IP地址吗?

Android 我可以通过wifi获取连接到的接入点的IP地址吗?,android,networking,wifi,Android,Networking,Wifi,嗨,我是android编程新手。我基本上是试图连接到一个接入点,并发送它来命令。在通过wifi连接到它之后,是否可以通过编程获得它的IP地址,以便我可以与它建立http连接? 到目前为止,我知道我们可以获得设备IP,但不确定是否可以获得接入点IP。请帮忙。提前感谢。我假定您指的是设备所连接的接入点的外部(公共)IP地址。如果是,那么有一种简单的方法可以获取设备所连接的接入点的公共IP地址。只需在web服务器上设置一个脚本,该脚本将回显连接到它的任何客户端的IP地址(类似于www.whatismy

嗨,我是android编程新手。我基本上是试图连接到一个接入点,并发送它来命令。在通过wifi连接到它之后,是否可以通过编程获得它的IP地址,以便我可以与它建立http连接?
到目前为止,我知道我们可以获得设备IP,但不确定是否可以获得接入点IP。请帮忙。提前感谢。

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

我正在使用它来获取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());
      }
试试看{
对于(枚举en=NetworkInterface.getNetworkInterfaces();en.hasMoreElements();)
{
NetworkInterface intf=en.nextElement();
对于(枚举Enumeration EnumipAddress=intf.getInetAddresses();EnumipAddress.hasMoreElements();)
{
InetAddress InetAddress=enumIpAddr.nextElement();
如果(!inetAddress.isLoopbackAddress())
{ 
//我的IP地址
字符串Ip=inetAddress.getHostAddress().toString();
}   
}
}
}
捕获(SocketException e)
{ 
Log.e(“发生错误”,例如toString());
}

可能的副本从副本中不清楚您所问的是否有意义。@我指的kabuko接入点确实分配了IP地址。我可以ping并连接到它。我的问题是,是否有可能从android应用程序中获得该IP。另外,这篇重复的文章也没有回答这个问题。谢谢,但很遗憾,我将无法访问任何其他web服务器。这需要是一个独立的android应用程序,只与它所连接的接入点进行交互。另外,我所说的接入点的IP是指DHCP代理分配给它的IP,使用它可以ping AP。这是一个完美的代码,但我认为它对wifiThanks Gaurav不起作用。上述代码在连接到wifi时返回ipv6地址。因此,我无法检查这是否是正确的地址。我还尝试包括if(!inetAddress.isLoopbackAddress()&&(inetAddress instanceof Inet4Address)),但同样没有得到任何IPv4地址。我连接的AP有IPv4地址,我可以在子网内ping它。但这并不是同样的结果。
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;
}