如题。最后还有接收并返回信息的代码。说穿了就是用VB实现一个简单的 Ping 程序。分不够再加。

解决方案 »

  1.   

    楼主 你的 e-mail 地址?
      

  2.   

    http://community.csdn.net/Expert/topic/3207/3207644.xml?temp=.541485
      

  3.   

    楼主请查收,来信地址为baoaya@****.com.cn
      

  4.   

    Option Explicit
    Private Const WS_VERSION_REQD As Long = &H101
    Private Const INADDR_NONE As Long = &HFFFFFFFF
    Private Const MAX_WSADescription As Long = 256
    Private Const MAX_WSASYSStatus As Long = 128
    Private Const PING_TIMEOUT As Long = 500Private Type ICMP_OPTIONS
      Ttl             As Byte
      Tos             As Byte
      Flags           As Byte
      OptionsSize     As Byte
      OptionsData     As Long
    End TypePrivate Type ICMP_ECHO_REPLY
      Address         As Long
      status          As Long
      RoundTripTime   As Long
      DataSize        As Long
      DataPointer     As Long
      Data            As String * 250
    End Type
    Private Type WSADATA
      wVersion As Integer
      wHighVersion As Integer
      szDescription(0 To MAX_WSADescription) As Byte
      szSystemStatus(0 To MAX_WSASYSStatus) As Byte
      wMaxSockets As Long
      wMaxUDPDG As Long
      dwVendorInfo As Long
    End TypePrivate Declare Function IcmpCreateFile Lib "icmp.dll" () As LongPrivate Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal IcmpHandle As Long) As Long
       
    Private 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
        
    Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Long, _
        lpWSADATA As WSADATA) As Long
        
    Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As LongPrivate Declare Function gethostname Lib "WSOCK32.DLL" (ByVal szHost As String, _
        ByVal dwHostLen As Long) As Long
        
    Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal szHost As String) As LongPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
        (xDest As Any, xSource As Any, ByVal nbytes As Long)
       
    Private Declare Function inet_addr Lib "WSOCK32.DLL" (ByVal s As String) As Long
        
    Private Sub Command1_Click()   'ping网络计算机
      Dim ECHO As ICMP_ECHO_REPLY
      Dim pos As Long
      Dim success As Long
      Dim WSAD As WSADATA
      Dim aa As Boolean
      Dim mystr As String
      
      aa = WSAStartup(WS_VERSION_REQD, WSAD) = 0
      If aa Then
         Dim hPort As Long
         mystr = inet_addr(Text1.Text)
         If mystr <> INADDR_NONE Then
            hPort = IcmpCreateFile()
            If hPort Then
               Call IcmpSendEcho(hPort, mystr, Text2.Text, Len(Text2.Text), _
                                 0, ECHO, Len(ECHO), PING_TIMEOUT)    '发送回响请求报文,返回回响应答报文
               Call IcmpCloseHandle(hPort)
            End If
            If ECHO.status = 0 Then Label4(0).Caption = "ping成功" Else Label4(0).Caption = "ping失败"
            Label4(1).Caption = ECHO.Address    '显示网络计算机地址
            Label4(2).Caption = ECHO.RoundTripTime & " ms"   '显示网络链接延迟时间
            Label4(3).Caption = ECHO.DataSize & " bytes  '显示数据包大小"
            Label4(4).Caption = ECHO.DataPointer
         End If
      End If
    End SubPrivate Sub Command2_Click()
      End
    End Sub