C#检查活动调制解调器连接

时间:2009-06-29 10:50:22

标签: c#

  

重复C# - How do I check for a network connection

您好,

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;
        }

2 个答案:

答案 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