如何通过ICMP判断计算机是否联网?

解决方案 »

  1.   

    http://topic.csdn.net/t/20051010/19/4317509.html
      

  2.   

    Option Explicit
    Private Declare Function InternetCheckConnection Lib "wininet.dll" Alias "InternetCheckConnectionA" (ByVal lpszUrl As String, ByVal dwFlags As Integer, ByVal dwReserved As Integer) As Integer
    Public Function isConnected() As Boolean
        Const FLAG_ICC_FORCE_CONNECTION     As Integer = &H1
        isConnected = InternetCheckConnection("http://www.microsoft.com", FLAG_ICC_FORCE_CONNECTION, 0)
    End FunctionPrivate Sub Command1_Click()
        MsgBox isConnected
    End Sub
    http://blog.csdn.net/wwcz898/archive/2006/05/26/756002.aspx
      

  3.   

    http://topic.csdn.net/t/20051130/08/4427378.html
      

  4.   

    Option Explicit
    Private Declare Function InetIsOffline Lib "url.dll" (ByVal dwFlags As Long) As LongPublic Function isConnected() As Boolean
        isConnected = Not InetIsOffline(0)
    End FunctionPrivate Sub Command1_Click()
        MsgBox isConnected
    End Sub
      

  5.   

    以上方法均不可行
    1.用InternetGetConnectedState函数只能判断是否连接局域网,而不是互联网。
    2.用InternetCheckConnection函数,如果没有联网,会出现数秒“死机”现象。
    3.用InetIsOffline函数,至少我测试了无论是否联网都返回True。我记得以前有人说过用ICMP可以判断是否联网,继续等待......
      

  6.   

    我一般winsock1.connect "www.mircosoft.com",80
    然后检查winsock1.state
      

  7.   

    实在不行的话,你就用ping结合管道,最后自己解析字串实现(估计应该能快一点)