System.Net.Sockets.SocketException (0x80004005): Network is



我有命令在较低版本的Android上正常工作,但由于WiFi管理器更改了Android 10及以上的配置命令,我的命令不响应并给出错误,请帮助我!

connectivityManager Android 10:

WifiNetworkSuggestion guestUsers = new WifiNetworkSuggestion.Builder()
.SetSsid("########")
.SetWpa2Passphrase("#######")
.Build();
var suggestions = new[] { guestUsers };
var status = wifiManager.AddNetworkSuggestions(suggestions);
var specifier = new WifiNetworkSpecifier.Builder()
.SetSsid("##########")
.SetWpa2Passphrase("###########")
.Build();
var request = new NetworkRequest.Builder()
.AddTransportType(TransportType.Wifi) // we want WiFi
.RemoveCapability(NetCapability.Internet) // Internet not required
.SetNetworkSpecifier(specifier) // we want _our_ network
.Build();
var connectivityManager = Android.App.Application.Context.GetSystemService(Context.ConnectivityService) as ConnectivityManager;
var callback = new NetworkCallback
{
NetworkAvailable = network =>
{
re = true;
}
};
connectivityManager.RequestNetwork(request, callback);

UdpClient Defult:

using (var client = new UdpClient())
{
IPEndPoint ep = new IPEndPoint(IPAddress.Parse(ipAddress), sendPort);
client.Connect(ep);
client.Send(test, test.Length);
}

错误捕获:

{System.Net.Sockets。SocketException (0x80004005): Network is unreachable .日志含义在System.Net. sockets.socket.connect[0x000b0]在/Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/System/System.Net.Sockets/Socket.cs:892System.Net. sockets.udpclient . connectIPEndPoint endPoint) [0x00033] in/Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/System/net/System/Net/Sockets/UDPClient.cs:477at SmartCube.DeviceFolder.Connection.SocketUdp () [0x00071] in}

注意:

让我再次提醒你,这个命令适用于Android 10及以下,没有问题,由于Android 10及以上的Wi-Fi管理器更新,它不起作用。

如果你的应用针对Android 10或更高版本,并且它不是一个系统应用或DPC,那么以下方法不会返回有用的数据:

  • getConfiguredNetworks()方法总是返回一个空列表。

  • 每个返回整数值的网络操作方法——addNetwork()updateNetwork()——总是返回-1。

  • 每个返回布尔值的网络操作(removeNetwork(),reassociate(),enableNetwork(),disableNetwork(),reconnect(),disconnect())总是返回false

如果你的应用需要连接到Wi-Fi网络,使用以下替代方法:

  • 要触发本地即时连接到Wi-Fi网络,请在标准NetworkRequest对象中使用WifiNetworkSpecifier

  • 要添加Wi-Fi网络以考虑为用户提供互联网接入,请使用WifiNetworkSuggestion对象。您可以通过分别调用addNetworkSuggestions()removeNetworkSuggestions()来添加和删除出现在自动连接网络选择对话框中的网络。这些方法不需要任何位置权限。

相关内容

  • 没有找到相关文章

最新更新