在vb中使用PING命令

更新时间:2023-07-17 01:12:48 阅读: 评论:0

PING一个IP地址(向它发送一个数据包并等待回应) 
本例演示了怎样通过API的调用向一个IP地址发送一个包的数据并等待回音。
新建一个工程,添加一个标准模块,写入以下代码:
Option  Explicit
Public  Const  IP_STATUS_BASE  =  11000
Public  Const  IP_SUCCESS  =  0
Public  Const  IP_BUF_TOO_SMALL  =  (11000  +  1)
Public  Const  IP_DEST_NET_UNREACHABLE  =  (11000  +  2)
Public  Const  IP_DEST_HOST_UNREACHABLE  =  (11000  +  3)
Public  Const  IP_DEST_PROT_UNREACHABLE  =  (11000  +  4)
Public  Const  IP_DEST_PORT_UNREACHABLE  =  (11000  +  5)
Public  Const  IP_NO_RESOURCES  =  (11000  +  6)
Public  Const  IP_BAD_OPTION  =  (11000  +  7)
Public  Const  IP_HW_ERROR  =  (11000  +  8)
Public  Const  IP_PACKET_TOO_BIG  =  (11000  +  9)
Public  Const  IP_REQ_TIMED_OUT  =  (11000  +  10)
Public  Const  IP_BAD_REQ  =  (11000  +  11)
Public  Const  IP_BAD_ROUTE  =  (11000  +  12)
Public  Const  IP_TTL_EXPIRED_TRANSIT  =  (11000  +  13)
Public  Const  IP_TTL_EXPIRED_REASSEM  =  (11000  +  14)
Public  Const  IP_PARAM_PROBLEM  =  (11000  +  15)
Public  Const  IP_SOURCE_QUENCH  =  (11000  +  16)
Public  Const  IP_OPTION_TOO_BIG  =  (11000  +  17)
Public  Const  IP_BAD_DESTINATION  =  (11000  +  18)
武汉平面设计培训Public  Const  IP_ADDR_DELETED  =  (11000  +  19)
Public  Const  IP_SPEC_MTU_CHANGE  =  (11000  +  20)
Public  Const  IP_MTU_CHANGE  =  (11000  +  21)
Public  Const  IP_UNLOAD  =  (11000  +  22)
Public  Const  IP_ADDR_ADDED  =  (11000  +  23)
Public  Const  IP_GENERAL_FAILURE  =  (11000  +  50)
Public  Const  MAX_IP_STATUS  =  11000  +  50
Public  Const  IP_PENDING  =  (11000  +  255)
Public  Const  PING_TIMEOUT  =  200
niron
Public  Const  WS_VERSION_REQD  =  &H101
Public  Const  WS_VERSION_MAJOR  =  WS_VERSION_REQD  \  &H100  And  &HFF&
Public  Const  WS_VERSION_MINOR  =  WS_VERSION_REQD  And  &HFF&
Public  Const  MIN_SOCKETS_REQD  =  1
cbd什么意思Public  Const  SOCKET_ERROR  =  -1
Public  Const  MAX_WSADescription  =  256
Public  Const  MAX_WSASYSStatus  =  128
Public  Type  ICMP_OPTIONS
Ttl  As  Byte
Tos  As  Byte
Flags  As  Byte
OptionsSize  As  Byte
OptionsData  As  Long
End  Type
Dim  ICMPOPT  As  ICMP_OPTIONS
themomentPublic  Type  ICMP_ECHO_REPLY
Address  As  Long
status  As  Long
RoundTripTime  As  Long
DataSize  As  Integer
Rerved  As  Integer
DataPointer  As  Long
Options  As  ICMP_OPTIONS
Data  As  String  *  250
End  Type
Public  Type  HOSTENT 考托福好还是雅思好
hName  As  Long
hAlias  As  Long
hAddrType  As  Integer
hLen  As  Integer
hAddrList  As  Long
End  Type
Public  Type  WSADATA
phosphoruswVersion  As  Integer
wHighVersion  As  Integer 
szDescription(0  To  MAX_WSADescription)  As  Byte
szSystemStatus(0  To  MAX_WSASYSStatus)  As  Byte
wMaxSockets  As  Integer
wMaxUDPDG  As  Integer
dwVendorInfo  As  Long
End  Type
Public  Declare  Function  IcmpCreateFile  Lib  "icmp.dll "  ()  As  Long
Public  Declare  Function  IcmpCloHandle  Lib  "icmp.dll "  (ByVal  IcmpHandle  As  Long)  As  Long
Public  Declare  Function  IcmpSendEcho  Lib  "icmp.dll "  (ByVal  IcmpHandle  As  Long,  ByVal  DestinationAddress  As  Long,  ByVal  RequestData  As  String,  ByVal  RequestSize  As  Integer,  ByVal  RequestOptions  As  Long,  ReplyBuffer  As  ICMP_ECHO_REPLY,  ByVal  ReplySize  As  Long,  ByVal  Timeout  As  Long)  As  Long
Public  Declare  Function  WSAGetLastError  Lib  "WSOCK32.DLL "  ()  As  Long
Public  Declare  Function  WSAStartup  Lib  "WSOCK32.DLL "  (ByVal  wVersionRequired  As  Long,  lpWSADATA  As  WSADATA)  As  Long
Public  Declare  Function  WSACleanup  Lib  "WSOCK32.DLL "  ()  As  Long
Public  Declare  Function  gethostname  Lib  "WSOCK32.DLL "  (ByVal  szHost  As  String,  ByVal  dwHostLen  As  Long)  As  Long
Public  Declare  Function  gethostbyname  Lib  "WSOCK32.DLL "  (ByVal  szHost  As  String)  As  Long
Public  Declare  Sub  RtlMoveMemory  Lib  "kernel32 "  (hpvDest  As  Any,  ByVal  hpvSource  As  Long,  ByVal  cbCopy  As  Long)
Public  Function  GetStatusCode(status  As  Long)  As  String
Dim  msg  As  String
Select  Ca  status
Ca  IP_SUCCESS:  msg  =  "ip  success "
Ca  IP_BUF_TOO_SMALL:  msg  =  "ip  buf  too_small "
Ca  IP_DEST_NET_UNREACHABLE:  msg  =  "ip  dest  net  unreachable "
Ca  IP_DEST_HOST_UNREACHABLE:  msg  =  "ip  dest  host  unreachable "
Ca  IP_DEST_PROT_UNREACHABLE:  msg  =  "ip  dest  prot  unreachable "
Ca  IP_DEST_PORT_UNREACHABLE:  msg  =  "ip  dest  port  unreachable "
Ca  IP_NO_RESOURCES:  msg  =  "ip  no  resources "
Ca  IP_BAD_OPTION:  msg  =  "ip  bad  option "
Ca  IP_HW_ERROR:  msg  =  "ip  hw_error "
Ca  IP_PACKET_TOO_BIG:  msg  =  "ip  packet  too_big "
Ca  IP_REQ_TIMED_OUT:  msg  =  "ip  req  timed  out "
Ca  IP_BAD_REQ:  msg  =  "ip  bad  req "
Ca  IP_BAD_ROUTE:  msg  =  "ip  bad  route "
Ca  IP_TTL_EXPIRED_TRANSIT:  msg  =  "ip  ttl  expired  transit "
Ca  IP_TTL_EXPIRED_REASSEM:  msg  =  "ip  ttl  expired  reasm "
Ca  IP_PARAM_PROBLEM:  msg  =  "ip  param_problem "
Ca  IP_SOURCE_QUENCH:  msg  =  "ip  source  quench "
Ca  IP_OPTION_TOO_BIG:  msg  =  "ip  option  too_big "
Ca  IP_BAD_DESTINATION:  msg  =  "ip  bad  destination "
Ca  IP_ADDR_DELETED:  msg  =  "ip  addr  deleted "
Ca  IP_SPEC_MTU_CHANGE:  msg  =  "ip  spec  mtu  ch
ange "
Ca  IP_MTU_CHANGE:  msg  =  "ip  mtu_change "
Ca  IP_UNLOAD:  msg  =  "ip  unload "
Ca  IP_ADDR_ADDED:  msg  =  "ip  addr  added "
Ca  IP_GENERAL_FAILURE:  msg  =  "ip  general  failure "
Ca  IP_PENDING:  msg  =  "ip  pending "
Ca  PING_TIMEOUT:  msg  =  "ping  timeout "
Ca  El:  msg  =  "unknown  msg  returned "
End  Select
GetStatusCode  =  CStr(status)  &  "  [  "  &  msg  &  "  ] "
End  Function
初三中考英语作文
Public  Function  HiByte(ByVal  wParam  As  Integer)
HiByte  =  wParam  \  &H1  And  &HFF& 
End  Function
Public  Function  LoByte(ByVal  wParam  As  Integer)
LoByte  =  wParam  And  &HFF& 
End  Function
Public  Function  Ping(szAddress  As  String,  ECHO  As  ICMP_ECHO_REPLY)  As  Long
Dim  hPort  As  Long
Dim  dwAddress  As  Long
Dim  sDataToSend  As  String
Dim  iOpt  As  Long
sDataToSend  =  "Echo  This "
dwAddress  =  AddressStringToLong(szAddress)
hPort  =  IcmpCreateFile()
If  IcmpSendEcho(hPort,  dwAddress,  sDataToSend,  Len(sDataToSend),  0,  ECHO,  Len(ECHO),  PING_TIMEOUT)  Then
'the  ping  succeeded,
'.Status  will  be  0
'.RoundTripTime  is  the  time  in  ms  for  the  ping  to  complete,
'.Data  is  the  data  returned  (NULL  terminated)
'.Address  is  the  Ip  address  that  actually  replied
'.DataSize  is  the  size  of  the  string  in  .Data
Ping  =  ECHO.RoundTripTime
El
Ping  =  ECHO.status  *  -1
End  If
Call  IcmpCloHandle(hPort)
End  Function
Function  AddressStringToLong(ByVal  tmp  As  String)  As  Long
Dim  i  As  Integer
Dim  parts(1  To  4)  As  String
i  =  0
'we  have  to  extract  each  part  of  the
'123.456.789.123  string,  delimited  by 英语新闻网站
'a  period
While  InStr(tmp,  ". ")  >  0
i  =  i  +  1
parts(i)  =  Mid(tmp,  1,  InStr(tmp,  ". ")  -  1)
tmp  =  Mid(tmp,  InStr(tmp,  ". ")  +  1)
Wend
i  =  i  +  1
parts(i)  =  tmp
If  i  <>  4  Then
AddressStringToLong  =  0
Exit  Function
End  If
'build  the  long  value  out  of  the 可可英语网
'hex  of  the  extracted  strings
AddressStringToLong  =  Val( "&H "  &  Right( "00 "  &  Hex(parts(4)),  2)  &  _
Right( "00 "  &  Hex(parts(3)),  2)  &  _
Right( "00 "  &  Hex(parts(2)),  2)  &  _
Right( "00 "  &  Hex(parts(1)),  2))
End  Function
Public  Function  SocketsCleanup()  As  Boolean
Dim  X  As  Long
X  =  WSACleanup()
If  X  <>  0  Then
MsgBox  "Windows  Sockets  error  "  &  Trim$(Str$(X))  &  "  occurred  in  Cleanup. ",  vbExclamation
SocketsCleanup  =  Fal
El
SocketsCleanup  =  True
End  If
End  Function
Public  Function  SocketsInitialize()  As  Boolean
Dim  WSAD  As  WSADATA
Dim  X  As  Integer 
Dim  szLoByte  As  String,  szHiByte  As  String,  szBuf  As  String
X  =  WSAStartup(WS_VERSION_REQD,  WSAD)
If  X  <>  0  Then
MsgBox  "Windows  Sockets  for  32  bit  Windows  "  &  "environments  is  not  successfully  responding. "
SocketsInitialize  =  Fal
Exit  Function
End  If
If  LoByte(WSAD.wVersion)  <  WS_VERSION_MAJOR  Or  (LoByte(WSAD.wVersion)  =  WS_VERSION_MAJOR  And  HiByte(WSAD.wVersion)  <  WS_VERSION_MINOR)  Then
szHiByte  =  Trim$(Str$(HiByte(WSAD.wVersion)))
szLoByte  =  Trim$(Str$(LoByte(WSAD.wVersion)))
szBuf  =  "Windows  Sockets  Version  "  &  szLoByte  &  ". "  &  szHiByte
szBuf  =  szBuf  &  "  is  not  supported  by  Windows  "  &  "Sockets  for  32  bit  Windows  environments. "
MsgBox  szBuf,  vbExclamation
SocketsInitialize  =  Fal
Exit  Function
End  If
If  WSAD.wMaxSockets  <  MIN_SOCKETS_REQD  Then
szBuf  =  "This  application  requires  a  minimum  of  "  &  Trim$(Str$(MIN_SOCKETS_REQD))  &  "  supported  sockets. "
MsgBox  szBuf,  vbExclamation
SocketsInitialize  =  Fal
Exit  Function
End  If
哈利波特全集名字
SocketsInitialize  =  True
End  Function
在Form中添加一个命令按钮Command1,一个文本框Text2,创建一个TextBox数组(Text1(0)到Text1(5))。在窗体中写入如下代码:
Private  Sub  Command1_Click() 
Dim  ECHO  As  ICMP_ECHO_REPLY 
Dim  pos  As  Integer 
Call  Ping(Text2.Text,  ECHO) 
Text1(0)  =  GetStatusCode(ECHO.status) 
Text1(1)  =  ECHO.Address 
Text1(2)  =  ECHO.RoundTripTime  &  "  ms " 
Text1(3)  =  ECHO.DataSize  &  "  bytes " 
If  Left$(ECHO.Data,  1)  <>  Chr$(0)  Then 
pos  =  InStr(ECHO.Data,  Chr$(0)) 
Text1(4)  =  Left$(ECHO.Data,  pos  -  1) 
End  If 
Text1(5)  =  ECHO.DataPointer 
End  Sub

本文发布于:2023-07-17 01:12:48,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/1100530.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:添加   发送   等待   写入   标准   数据
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图