winform程序需要联网才能操作,怎样监控网络状态,网络只要中断就给用户提示信息《网络中断》。

解决方案 »

  1.   

    用数据包啊,ping个ip地址或网址不通就是网络中断了
      

  2.   

    //导入dll
    [DllImport("wininet.dll", EntryPoint = "InternetGetConnectedState")]
    //判断网络状况的方法,返回值true为连接,false为未连接
    public extern static bool InternetGetConnectedState(out int conState, int reder);
     //在你的button事件中写下如下代码就行
        void Refresh();
            {
               while(true)            int n =0;
                if (InternetGetConnectedState(out n,0))               {
                         MessageBox.Show("网终处于连接状态");                }
                else               {
                    MessageBox.Show("网络处于未连接状态");               }
            }
      

  3.   

    不好意思 刚才没写完
    //导入dll
    [DllImport("wininet.dll", EntryPoint = "InternetGetConnectedState")]
    //判断网络状况的方法,返回值true为连接,false为未连接
    public extern static bool InternetGetConnectedState(out int conState, int reder);
     //在你的button事件中写下如下代码就行
      void Refresh();
      {
      while(true)
    {
      int n =0;
      if (!InternetGetConnectedState(out n,0))
      {
      MessageBox.Show("网络处于未连接状态");  }
    }
      }
      

  4.   


    调用刷新事件Refresh()就可以了  while里面最好加个Thread.Sleep(1000); 设置刷新事件 调用的时候用线程哦兄弟
      

  5.   

    联网也有局域网与广域网。
    广域网的话只能Ping。别的方法几乎没有可靠的。
    如果判断本机的通信是否断开。.net提供了一个属性。
    vb.net是在my命名空间下很容易找。
    c#的好象是在net命名空间下。
      

  6.   

    我不是在需要知道的时候才触发事件(比方说onclick事件)去检查网络状态,我是想,只要网络一中断,就检测到。(C#语言)
    我自己是写了一个线程的方法,定时去检查,我想问下,有没有别的什么方法?这方法会不会影响系统效率?
      Thread t1 = new Thread(GetNetStatus);
                t1.Start();
       private static void GetNetStatus()
            {
                System.Timers.Timer t = new System.Timers.Timer();
                t.Interval = 1000;//设置时间间隔为100ms
                t.AutoReset = true;//设置是执行一次(false)还是一直执行(true)
                t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
                t.Elapsed += new System.Timers.ElapsedEventHandler(IsInternetConnected);//到达时间的时候执行事件      
            }
            [DllImport("wininet.dll")]
            private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue);
            public static void IsInternetConnected(object source, System.Timers.ElapsedEventArgs e)
            {
                int i = 0;
                string message = "";
                bool flag = InternetGetConnectedState(out i, 0);
                if (flag)
                {
                    message = "网络连接正常";
                }
                else
                {
                    message = "网络连接中断";
                    MessageBox.Show(message);
                }        }
      

  7.   

      public delegate void MyInvoke(string str);
            private void Form1_Load(object sender, EventArgs e)
            {
                Thread t1 = new Thread(GetNetStatus);
                t1.IsBackground = true;
                t1.Start();
            }
            private void SetText(string s)
            {
                if (textbox1.InvokeRequired)
                {
                    MyInvoke _myInvoke = new MyInvoke(SetText);
                    this.Invoke(_myInvoke, new object[] { s });
                }
                else
                {
                    textbox1.Text = s;
                }
            }
                   private void  GetNetStatus()
                    {
                      System.Timers.Timer t = new System.Timers.Timer();
                      t.Interval = 1000;//设置时间间隔为100ms
                      t.AutoReset = true;//设置是执行一次(false)还是一直执行(true)
                      t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
                      t.Elapsed += new System.Timers.ElapsedEventHandler(IsInternetConnected);
                      //到达时间的时候执行事件  
                     
                     
                    }
                  [DllImport("wininet.dll")]
                  private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue);
                  private  void IsInternetConnected(object source, System.Timers.ElapsedEventArgs e)
                  {
                      int i = 0;
                      string message = "";
                      bool flag = InternetGetConnectedState(out i, 0);
                      if (flag)
                      {
                      message = "网络连接正常";
                      }
                      else
                      {
                      message = "网络连接中断";
                      }
                      SetText(message);
                      
                  }经过测试发现网络一直都正常,把网卡暂停使用也不会提示中断!晕!