我想检查一下我的手机是否可以连接到互联网。我已经看过几个问题。其中之一是Question。它说使用NetworkInterface.GetIsNetworkAvailable()
这个并且我尝试了。我已将我的电脑与互联网断开连接,同时关闭了模拟器的DataConnection
,但NetworkInterface.GetIsNetworkAvailable()
此操作始终返回true。但同时我也会检查NetworkInterfaceType.None
,有趣的是它会变为空。
任何人都可以解释我在哪里缺少信息吗?
尝试: -
public static void CheckNetworkAvailability()
{
// this is coming true even when i disconnected my pc from internet.
// i also make the dataconnection off of the emulator
var fg = NetworkInterface.GetIsNetworkAvailable();
var ni = NetworkInterface.NetworkInterfaceType;
// this part is coming none
if (ni == NetworkInterfaceType.None)
IsConnected = false;
}
感谢任何帮助:)
答案 0 :(得分:9)
我正在使用以下代码检查设备是否可以访问互联网,如果它已连接到wifi或数据连接..
public void UpdateNetworkInformation()
{
// Get current Internet Connection Profile.
ConnectionProfile internetConnectionProfile = Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile();
//air plan mode is on...
if (internetConnectionProfile == null)
{
Is_Connected = false;
return;
}
//if true, internet is accessible.
this.Is_InternetAvailable = internetConnectionProfile.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess;
// Check the connection details.
else if (internetConnectionProfile.NetworkAdapter.IanaInterfaceType != 71)// Connection is not a Wi-Fi connection.
{
Is_Roaming = internetConnectionProfile.GetConnectionCost().Roaming;
/// user is Low on Data package only send low data.
Is_LowOnData = internetConnectionProfile.GetConnectionCost().ApproachingDataLimit;
//User is over limit do not send data
Is_OverDataLimit = internetConnectionProfile.GetConnectionCost().OverDataLimit;
}
else //Connection is a Wi-Fi connection. Data restrictions are not necessary.
{
Is_Wifi_Connected = true;
}
}
修改强> 对于简单的互联网连接,您可以使用以下代码。
System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
希望这有帮助!
答案 1 :(得分:7)
即使您将网络条件模拟为没有网络,模拟器也会始终返回NetworkInterface.GetIsNetworkAvailable()
为真。
我自己遇到了这个问题,测试此行为的唯一真正方法是将应用程序部署到运行Windows Phone的物理设备,并在关闭数据的情况下对其进行测试。
答案 2 :(得分:4)
NetworkInterface.GetIsNetworkAvailable()
检查network connection
而不是internet connection
。如果您处于任何类型的网络中,则无论true
是否存在,它都将返回internet
。
您可以按以下方式检查互联网连接:
using System.Net
private bool IsOnline()
{
try
{
IPHostEntry iPHostEntry = Dns.GetHostEntry("www.wikipedia.com");
return true;
}
catch (SocketException ex)
{
return false;
}
}