WiFi直接IP地址

时间:2015-06-14 17:33:24

标签: android android-wifi wifi-direct wifimanager wifip2p

任何WIFI路由器给智能手机提供的Wifi-Direct Ip_address和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-direct IPAddress ..

请帮助......

提前致谢..

1 个答案:

答案 0 :(得分:0)

没有IP地址不一样。 您在此处犯了错误,getSystemService(WIFI_P2P_SERVICE)返回WifiP2pManager而不是WifiManager

其次 当您连接到普通的Wifi网络时,即通过路由器或热点,您可以使用wifiManager.getConnectionInfo()。当你通过WifiDirect连接时,你不会获得IP,因为它不是一个普通的wifi网络。因此,您获得IP为0.0.0.0的原因。

现在主要的问题是WifiDirect中的IP是什么。 如果您是GroupOwner,则修复了GO_IP = 192.168.43.1。因此,在onConnectionInfoAvailableonGroupInfoAvailable中,您可以执行info.isGroupOwner(),如果您不是groupOwner,那么另一个系统就是,因此他的IP是 GO_IP ,然后此系统可以使用 GO_IP

GO 进行通信

现在如果GO想要与客户沟通,他可以使用NetworkInterfaces获取他的IP。请参阅此how to get the client IP

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