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

Not able to ping device which started the LocalOnlyHotSpot when mobile data is on

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

 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 "";
}

您可以尝试为已连接的 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)
}
})