如何判断网络状态,当离线的时候能知道网络断了

解决方案 »

  1.   

    KeSummer说的也有道理,不过InternetGetConnectedState的功能有限,例如直接切换网络lpdwFlags返回的还是INTERNET_CONNECTION_LAN ,
    目前QQ在断开或者切换网络也是在一段时间之后提示离线的...
      

  2.   

    用 API InternetGetConnectedState(),例子如下:
    #include<wininet.h>DWORD flags;//上网方式
    BOOL m_bOnline;//是否在线
    m_bOnline=InternetGetConnectedState(&flags,0);
    if(m_bOnline)//在线
    {
    if(flags & INTERNET_CONNECTION_MODEM)
    {
    //拨号上网
    }
    if(flags & INTERNET_CONNECTION_LAN)
    {
    //通过局域网}
    if(flags & INTERNET_CONNECTION_PROXY)
    {
    //代理
    }
    if(flags & INTERNET_CONNECTION_MODEM_BUSY)
    {
    //MODEM被其他非INTERNET连接占用
    }
    }
    else
    {
    //没有在线
    }
      

  3.   

    QQ是用UDP通讯,发心跳包主要是为了在防火墙保持一个Hole
      

  4.   

    InternetGetConnectedState 这个不准的,如果在局域网内不准
      

  5.   

    可以 InternetCheckConnection 定时去连 sina, china 这些大的门户网站, 连不上那网络肯定是由问题。csdn 就算了,成天挂。
      

  6.   

    http://www.ndis.com/faq/QA05040101.htm
    多找找国外的文档吧,都有讲的