我是adsl上网的我用下面的方法检测网络链接,判断不准确
设置断点测试,不论是否连接网络return state都返回true
怎么回事??[DllImport("wininet.dll")]
        private extern static bool InternetGetConnectedState( out int connectionDescription, int reservedValue ) ;
       
        private bool IsConnected()
        {
            int I=0;
            bool state = InternetGetConnectedState(out I,0);
            return state;
        }

解决方案 »

  1.   

    刚刚测试了下
    我是5个人共用一个猫儿(带路由功能),两个ADSL账号
    情况一:拔掉我机子的网线(相当于关掉调解器),InternetGetConnectedState返回false
    情况二:不拔网线,但是pc机不拨号,            InternetGetConnectedState返回ture,LAN型网络链接
    情况三:不拔网线,但是pc机拨号,              InternetGetConnectedState返回true,MODEM网络链接这函数是不是判断调解器是否有网络连通啊,我想判断的是本机的网络连通状态,
    上面这三种情况都不是我想要的
    我的目的是:电脑ADSL建立连接了,表示网络连通
                电脑ADSL没建立连接,表示未链接网络怎么做到这点??ping么?大大们等不等告诉俺怎么判断本机的网络连接状况
      

  2.   

    用ping,你的思路是对的!
    实现代码:
    http://www.csharphelp.com/archives2/files/archive296/ping.cs
      

  3.   


    private void Form_Load(object sender, EventArgs e)
    {
            public  Ping ping = new Ping();        public  PingReply res;         try
                {
                    res = ping.Send("www.google.com");
                }
                catch (Exception a)
                {
                    MessageBox.Show(a.Message);
                }
                try
                {
                    if (res.Status != System.Net.NetworkInformation.IPStatus.Success)
                    {
                        this.reflectionLabel1.Text = "<b>请检查网络连接是否正常</b>";
                        
                    }
                    else
                    {
                        this.reflectionLabel1.Text = "<b>已连接</b>";       
                    }
                }
                catch (Exception ae)
                {
                    MessageBox.Show(ae.Message);
                }
    }
      这个ping方法亲自尝试,绝对有效,也是曾经在Csdn上找到的!楼主试试把!
      

  4.   

    可以自己写个方法实现ping的功能,调用返回的值,判断网络状态例子如下:
    public string sPing(string IP)
            {        
                Ping pingSender = new Ping();
                PingOptions options = new PingOptions();
                options.DontFragment = true;
                string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
                byte[] buffer = Encoding.ASCII.GetBytes(data);
                int timeout = 1200;
                //string IP = "192.168.100.1";
                PingReply reply = pingSender.Send(IP, timeout, buffer, options);
                if (reply.Status == IPStatus.Success)
                {
                    //string sText;                string sPing;
                   
                    sPing = "网络正常";               
                   return sPing;            
                }
                else
                {
                    return "网络不通";
                   
                }            
              
                    }
      

  5.   

    知道为啥子InternetGetConnectedState 失灵了只要用户pc Internet属性-链接-从不进行拨号链接 设置成这样子无论你拨不拨号,这个这个函数的返回值 都是true呵呵,那偶去ping去
      

  6.   


    的确如此,只要插了网线,任务栏有显示“本地已连接”一类的就会返回true
      

  7.   

    http://topic.csdn.net/u/20090710/15/d2fef0c6-74ee-4711-b1b9-7a65103c1a23.html
    netstat命令
      

  8.   

    感觉ping 也不是很完美,要是网络状况不好如果有两个拨号器
    一个自启动程序,用ping判断网络状况,能ping通,但是超出了timeout时间,结果链接网络失败
    另一个手工链接,不判断网络状况,直接链接网络,结果链接成功了奶奶的,要效果,就只有将慢速度了