任何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 ..
请帮助......
提前致谢..
答案 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
。因此,在onConnectionInfoAvailable或onGroupInfoAvailable中,您可以执行info.isGroupOwner()
,如果您不是groupOwner,那么另一个系统就是,因此他的IP是 GO_IP ,然后此系统可以使用 GO_IP
现在如果GO想要与客户沟通,他可以使用NetworkInterfaces
获取他的IP。请参阅此how to get the client IP。
我认为这一切都应该可以解决你的问题。