0

任何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 直接 IP 地址。

请帮忙...

提前致谢..

4

1 回答 1

0

不,IP地址不一样。您在这里犯了错误,getSystemService(WIFI_P2P_SERVICE)返回WifiP2pManager not WifiManager

其次wifiManager.getConnectionInfo(),当您通过路由器或热点连接到普通 Wifi 网络时使用。像这样通过 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. 请参阅this how to get the client IP

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

于 2015-06-16T07:11:39.720 回答