vb中如何判断本台电脑是否能连接上局域网上的另一台电脑?
各位达人说说啊~

解决方案 »

  1.   

    Const INADDR_NONE As Long = &HFFFFFFFF
    Const PING_TIMEOUT As Long = 500
    Type ICMP_ECHO_REPLY
      Address         As Long
      status          As Long
      RoundTripTime   As Long
      DataSize        As Long
      DataPointer     As Long
      Data            As String * 250
    End TypeDeclare Function inet_addr Lib "WSOCK32.DLL" (ByVal s As String) As Long
    Declare Function IcmpCreateFile Lib "icmp.dll" () As Long
    Declare Function IcmpSendEcho Lib "icmp.dll" (ByVal IcmpHandle As Long, _
                     ByVal DestinationAddress As Long, _
                     ByVal RequestData As String, _
                     ByVal RequestSize As Long, _
                     ByVal RequestOptions As Long, _
                     ReplyBuffer As ICMP_ECHO_REPLY, _
                     ByVal ReplySize As Long, _
                     ByVal Timeout As Long) As Long
    Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal IcmpHandle As Long) As LongPrivate Function Ping(ip As String) As Boolean
      Dim Echo  As ICMP_ECHO_REPLY
      Dim Mystr As String
      Dim hPort As Long
      Mystr = inet_addr(ip)
      If Mystr <> INADDR_NONE Then
         hPort = IcmpCreateFile()
         If hPort Then
            Call IcmpSendEcho(hPort, Mystr, 0, 0, 0, Echo, Len(Echo), PING_TIMEOUT) '發送回響請求報文
            Call IcmpCloseHandle(hPort)
         End If
         If Echo.status = 0 Then Ping = True Else Ping = False
      End If
    End FunctionPrivate Sub Command1_Click()
      If Ping("202.108.22.44") Then MsgBox "ping成功" Else MsgBox "ping失敗"
    End Sub
      

  2.   

    直接CONNECT过去,然后判断SOCKET状态