您好,
VS 2008 SP1
我正在使用以下代码测试用户是使用无线连接还是LAN连接进行连接。即电缆已插入,或无线电源已关闭。代码适用于此。但是,如果您发现任何潜在的问题,或者您知道更好的方式,我有兴趣了解更多。
但是,客户希望我们检查用户是否也使用调制解调器进行连接。从我的源代码中可以看出,我正在寻找以“本地连接”或“无线网络连接”开头的连接。还行吧。
然而,问题是调制解调器名称可能是任何东西,因为当用户使用“新连接向导”设置其调制解调器连接时,他们可以调用任何东西。所以如果我的switch语句我不知道该找什么。
任何建议都是最有帮助的,
// Checks if Network is either connected by LAN or Wireless
public bool IsNetworkConnected()
{
NetworkInterface[] networkCards = NetworkInterface.GetAllNetworkInterfaces();
bool connected = false;
// Loop through to find the one we want to check for connectivity.
// Connection can have different numbers appended so check that the
// network connections start with the conditions checked below.
foreach (NetworkInterface nc in networkCards)
{
// Check LAN
if (nc.Name.StartsWith("Local Area Connection"))
{
if (nc.OperationalStatus == OperationalStatus.Up)
{
connected = true;
}
}
// Check for Wireless
if (nc.Name.StartsWith("Wireless Network Connection"))
{
if (nc.OperationalStatus == OperationalStatus.Up)
{
connected = true;
}
}
}
return connected;
}
答案 0 :(得分:1)
GetIsNetworkAvailable
的值应该告诉您确切的需要。
MSDN说明:
指示是否有任何网络连接可用 ...
如果任何网络接口标记为“up”且不是环回或隧道接口,则认为网络连接可用。
这意味着您可以将其简单地用作:
var connected = NetworkInterface.GetIsNetworkAvailable();
答案 1 :(得分:1)
你不能使用这里描述的技术:C# - How do I check for a network connection
System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()
要监控IP地址的变化或网络可用性的变化,请使用NetworkChange类中的事件:
System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged
System.Net.NetworkInformation.NetworkChange.NetworkAddressChanged