如何通过3G连接检查互联网连接状态?
问题描述:
我有以下方法:如何通过3G连接检查互联网连接状态?
public static bool IsNetworkConnected()
{
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
IReadOnlyList<ConnectionProfile> connectionProfile = NetworkInformation.GetConnectionProfiles();
if (InternetConnectionProfile == null)
return false;
else
return true;
}
当我连接到互联网,在一个典型的方式,它工作正常 - 通过LAN电缆或Wi-Fi。当我使用我的3G USB调制解调器时,它返回错误(InternectConnectionProfile
为空)。这是为什么?我该如何解决它?
答
您可以考虑在互联网上ping一台服务器。这不是对您的问题的100%回答,但可能从不同的角度有所帮助。
using System.Net;
using System.Net.NetworkInformation;
using (Ping Packet = new Ping())
{
if (Packet.Send(IPAddress.Parse(IP), 1000, new byte[] { 0 }).Status == IPStatus.Success))
{
// ...
}
}
+0
由于数据包有时似乎在路由器之间停止咖啡并且丢失,所以我会在报告“连接断开”之前尝试至少ping 3次,否则我同意这种直接的方法。 – Alex 2012-08-01 10:32:59
答
尝试
public static bool IsConnectedToInternet()
{
ConnectionProfile connectionProfile = NetworkInformation.GetInternetConnectionProfile();
return (connectionProfile!=null && connectionProfile.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess);
}
我通常会建议你忽略当前的连接状态,只是尝试什么,那就是你想要做在互联网上(最好在后台线程) - 再如果您在超时期限/重试次数之后无法完成任务,请向用户报告。连接可以在检查它们的存在和使用它们之间下降,或者在你正在做的任何事情的一半之间进行。既然你*有*编写代码来处理这些情况*无论如何*,保存一些编码,并避免预先检查。 – 2012-08-01 10:36:07