如题

解决方案 »

  1.   

    判断网络状态
    记得有个函数可以判断的
    查查winsock编程的资料
      

  2.   

    精确的判断网络是否可用 
    Socket类的Connected属性往往不能精确的判断出网络是否连接,下面这段代码可以解决这个问题/// <summary>
    /// 是否已经连接
    /// </summary>
    public virtual bool Connected
    {
     get
     {
      try
      {
       //检查socket的状态是否可读
       if(m_socket.Connected && m_socket.Poll(0, SelectMode.SelectRead))
       {
        byte[] aByte = new byte[1];
        //因为TCP/IP协议无法精确的判断网络是否可用
        //试读一个字符,Peek参数指定读取的字符不会从缓冲区中移除
        //假如可读则表示连接可用
        if(m_socket.Receive(aByte, 0, 1, SocketFlags.Peek) != 0)
         return true;
        Close("Disconnected.");
        return false;
       }
      }
      catch(SocketException e)
      {
       OnException(e);
      }
      return m_socket.Connected;
     }
    }
      

  3.   

    windows系统能很快的探测到网线断了,
    不知道有没有系统调用来得到这个状态?