在开发中遇到获取网络状态的需求。这个时候我们可以选择使用ping命令测试固定的网络址来判断,示例代码如下:

 [Test]
        public void NetPingTest()
        {
            var ping = new System.Net.NetworkInformation.Ping();
            var res = ping.Send("www.baidu.com");
            if (res.Status != System.Net.NetworkInformation.IPStatus.Success)
            {
                Console.WriteLine("网络异常");
            }
            else
            {
                Console.WriteLine("网络正常");
            }
        }

一个简单的实现就完成了。但是ping 可能有个别时候会失败,这个也正常需要考虑到。同时我们可以多选几组地址如下:

 [Test]
        public void NetPingTest2()
        {
            string[] urls = new string[] { "www.baidu.com", "csdn.net", "www.cnblogs.com" };
            var ping = new System.Net.NetworkInformation.Ping();
            int reachable = 0;
            foreach (string url in urls)
            {
                var res = ping.Send(url);
                if (res.Status == System.Net.NetworkInformation.IPStatus.Success)
                    reachable++;
            }

            if (reachable==urls.Length)
            {
                Console.WriteLine("网络异常");
            }
            else
            {
                Console.WriteLine("网络正常");
            }
        }

或者设置一个阀值,或者测试自己指定的服务器,都取决于您的业务。
lebang.cn