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