Android WiFi直接Ip地址

Android WiFi直接Ip地址,android,android-wifi,wifi-direct,wifimanager,wifip2p,Android,Android Wifi,Wifi Direct,Wifimanager,Wifip2p,Wifi将Ip_地址和任何Wifi路由器提供给智能手机的Ip地址是否相同? 我下面的代码获取我的IP地址 public String getP2PIpAddr() { WifiManager wifiManager = (WifiManager) getSystemService(WIFI_P2P_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ip = wifiInfo.getIpAddre

Wifi将Ip_地址和任何Wifi路由器提供给智能手机的Ip地址是否相同? 我下面的代码获取我的IP地址

public String getP2PIpAddr() {
   WifiManager wifiManager = (WifiManager) getSystemService(WIFI_P2P_SERVICE);
   WifiInfo wifiInfo = wifiManager.getConnectionInfo();
   int ip = wifiInfo.getIpAddress();

   String ipString = String.format(
   "%d.%d.%d.%d",
   (ip & 0xff),
   (ip >> 8 & 0xff),
   (ip >> 16 & 0xff),
   (ip >> 24 & 0xff));

   return ipString;
}
但当我没有连接到任何wifi路由器时,它会给我0.0.0.0。但它会将路由器给我的IP地址返回给手机,而不是wifi直接IP地址

请帮忙


提前谢谢

否IP地址不相同。 您在这里出错,
getSystemService(WIFI\u P2P\u服务)
返回的不是
WifiManager

其次 当您通过路由器或热点连接到普通Wifi网络时,可以使用wifiManager.getConnectionInfo()。通过像这样的WifiDirect连接时无法获得IP,因为它不是正常的wifi网络。因此,您获得IP的原因是
0.0.0.0

现在主要的问题是WifiDirect中的IP是什么。 如果您是GroupOwner,那么您已经修复了GO_IP=
192.168.43.1
。因此,在或中,您可以执行
info.isGroupOwner()
,如果您不是groupOwner,则另一个系统是,因此他的IP是GO\u IP,然后该系统可以使用GO\u IPGO\u进行通信

现在,如果GO想与客户端通信,他可以使用
网络接口
获取IP。参考这个

我认为这一切都应该解决你的问题