我遇到了一个问题,我的 Android 应用程序无法使用TcpClient
该类进行传出连接(问题位于此处)。0.0.0.0
在调试和进行进一步研究时,我发现我的 Android 设备(API 级别 22)正在接收连接到我的 WiFi 网络时的子网掩码。我的 DHCP 服务器配置为使用255.255.255.0
,所以我相信这种差异可能是我其他问题的根源。这是我的代码:
//Connect to the WiFi network
int id = WiFiManager.AddNetwork(new WifiConfiguration()
{
Ssid = $"\"{ssid}\"",
PreSharedKey = $"\"{password}\""
});
WiFiManager.EnableNetwork(id, true);
WiFiManager.Reconnect();
//Retrieve subnet mask (for debugging)
int subnet_mask = WiFiManager.DhcpInfo.Netmask;
subnet_mask
返回0
,并且DhcpInfo
该类的格式化版本显示:
{ipaddr 10.0.0.15 gateway 10.0.0.0 netmask 0.0.0.0 dns1 10.0.0.0 dns2 0.0.0.0 DHCP server
10.0.0.0 lease 43200 seconds}
在这种情况下,有什么方法可以在 Android API 中手动更改子网掩码(或“网络掩码”)?我曾尝试使用此处所示的静态 IP 配置,但在 API 级别 17 中已弃用这些设置。我也尝试过DhcpInfo.Netmask
手动设置该属性,但它需要一个int
. 我根据这个答案计算了一个,但它太大了,变成了uint
. 最后,我查看了各种类,包括Android.Net.Wifi.WifiManager
,看看是否有办法更改网络掩码。我没有找到任何东西,但我可能只是在寻找错误的地方。
任何帮助是极大的赞赏!
更新:
出于安全原因,标准 Android API 似乎无法做到这一点。但是,Android NDK 可以更改子网掩码吗?我知道它提供了对设备的较低级别的访问,我不需要将此应用程序放在应用商店(仅供我使用)。