移动数据开启时无法 ping 通启动 LocalOnlyHotSpot 的设备

问题描述 投票:0回答:1

我正在使用 wifiManager.startLocalOnlyHotspot 启动一个没有互联网访问的热点,以便连接设备可以使用套接字将文件发送到该设备。一切都按预期工作,但当 ping 的同一设备的移动数据打开时,我无法 ping 通连接的 wifi 热点设备。当我禁用移动数据时,我可以 ping 到我从实用程序类获得的服务器 IP,我正在发布该实用程序方法。谁能向我解释我所缺少的概念?

 public static String getHotspotIpAddress(Context context) {
    WifiManager wifimanager = (WifiManager) context.getApplicationContext().getSystemService(WIFI_SERVICE);

    DhcpInfo dhcpInfo = wifimanager == null ? null : wifimanager.getDhcpInfo();
    if (dhcpInfo != null) {
        int address = dhcpInfo.serverAddress;
        return ((address & 0xFF)
                + "." + ((address >> 8) & 0xFF)
                + "." + ((address >> 16) & 0xFF)
                + "." + ((address >> 24) & 0xFF));
    }
    return "";
}
android android-wifi hotspot
1个回答
1
投票

您可以尝试将默认网络设置为已连接的 wifi 热点,以便将来的所有套接字都将仅使用此 wifi 网络创建。

val request = NetworkRequest.Builder()
request.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
connectivityManager.registerNetworkCallback(request.build(), object : NetworkCallback() {   
override fun onAvailable(network: Network) {
currentNetwork = network
val success = ConnectivityManager.setProcessDefaultNetwork(network)
}
})
© www.soinside.com 2019 - 2024. All rights reserved.