BASModule模块把以下代码回到BASModule模块:
OptionExplicitPrivateConstIP_SUCCESSAsLong=0PrivateConstIP_STATUS_BASEAsLong=11000PrivateConstIP_BUF_TOO_SMALLAsLong=(11000 1)PrivateConstIP_DEST_NET_UNREACHABLEAsLong=(11000 2)PrivateConstIP_DEST_HOST_UNREACHABLEAsLong=(11000 3)PrivateConstIP_DEST_PROT_UNREACHABLEAsLong=(11000 4)PrivateConstIP_DEST_PORT_UNREACHABLEAsLong=(11000 5)PrivateConstIP_NO_RESOURCESAsLong=(11000 6)PrivateConstIP_BAD_OPTIONAsLong=(11000 7)PrivateConstIP_HW_ERRORAsLong=(11000 8)PrivateConstIP_PACKET_TOO_BIGAsLong=(11000 9)PrivateConstIP_REQ_TIMED_OUTAsLong=(11000 10)PrivateConstIP_BAD_REQAsLong=(11000 11)PrivateConstIP_BAD_ROUTEAsLong=(11000 12)PrivateConstIP_TTL_EXPIRED_TRANSITAsLong=(11000 13)PrivateConstIP_TTL_EXPIRED_REASSEMAsLong=(11000 14)PrivateConstIP_PARAM_PROBLEMAsLong=(11000 15)PrivateConstIP_SOURCE_QUENCHAsLong=(11000 16)PrivateConstIP_OPTION_TOO_BIGAsLong=(11000 17)PrivateConstIP_BAD_DESTINATIONAsLong=(11000 18)PrivateConstIP_ADDR_DELETEDAsLong=(11000 19)PrivateConstIP_SPEC_MTU_CHANGEAsLong=(11000 20)PrivateConstIP_MTU_CHANGEAsLong=(11000 21)PrivateConstIP_UNLOADAsLong=(11000 22)PrivateConstIP_ADDR_ADDEDAsLong=(11000 23)PrivateConstIP_GENERAL_FAILUREAsLong=(11000 50)PrivateConstMAX_IP_STATUSAsLong=(11000 50)PrivateConstIP_PENDINGAsLong=(11000 255)PrivateConstPING_TIMEOUTAsLong=500PrivateConstWS_VERSION_REQDAsLong=&H101PrivateConstMIN_SOCKETS_REQDAsLong=1PrivateConstSOCKET_ERRORAsLong=-1PrivateConstINADDR_NONEAsLong=&HFFFFFFFFPrivateConstMAX_WSADescriptionAsLong=256PrivateConstMAX_WSASYSStatusAsLong=128PrivateTypeICMP_OPTIONSTtlAsByteTosAsByteFlagsAsByteOptionsSizeAsByteOptionsDataAsLongEndTypePublicTypeICMP_ECHO_REPLYAddressAsLongstatusAsLongRoundTripTimeAsLongDataSizeAsLong注释:formerlyinteger注释:ReservedAsIntegerDataPointerAsLongOptionsAsICMP_OPTIONSDataAsString*250EndTypePrivateTypeWSADATAwVersionAsIntegerwHighVersionAsIntegerszDescription(0ToMAX_WSADescription)AsByteszSystemStatus(0ToMAX_WSASYSStatus)AsBytewMaxSocketsAsLongwMaxUDPDGAsLongdwVendorInfoAsLongEndTypePrivateDeclareFunctionIcmpCreateFileLib"icmp.dll"()AsLongPrivateDeclareFunctionIcmpCloseHandleLib"icmp.dll"(ByValIcmpHandleAsLong)AsLongPrivateDeclareFunctionIcmpSendEchoLib"icmp.dll"(ByValIcmpHandleAsLong,ByValDestinationAddressAsLong,ByValRequestDataAsString,ByValRequestSizeAsLong,ByValRequestOptionsAsLong,ReplyBufferAsICMP_ECHO_REPLY,ByValReplySizeAsLong,ByValTimeoutAsLong)AsLongPrivateDeclareFunctionWSAGetLastErrorLib"WSOCK32.DLL"()AsLongPrivateDeclareFunctionWSAStartupLib"WSOCK32.DLL"(ByValwVersionRequiredAsLong,lpWSADATAAsWSADATA)AsLongPrivateDeclareFunctionWSACleanupLib"WSOCK32.DLL"()AsLongPrivateDeclareFunctiongethostnameLib"WSOCK32.DLL"(ByValszHostAsString,ByValdwHostLenAsLong)AsLongPrivateDeclareFunctiongethostbynameLib"WSOCK32.DLL"(ByValszHostAsString)AsLongPrivateDeclareSubCopyMemoryLib"kernel32"Alias"RtlMoveMemory"(xDestAsAny,xSourceAsAny,ByValnbytesAsLong)PrivateDeclareFunctioninet_addrLib"WSOCK32.DLL"(ByValsAsString)AsLongPublicFunctionGetStatusCode(statusAsLong)AsStringDimmsgAsStringSelectCasestatusCaseIP_SUCCESS:msg="ipsuccess"CaseINADDR_NONE:msg="inet_addr:badIPformat"CaseIP_BUF_TOO_SMALL:msg="ipbuftoo_small"CaseIP_DEST_NET_UNREACHABLE:msg="ipdestnetunreachable"CaseIP_DEST_HOST_UNREACHABLE:msg="ipdesthostunreachable"CaseIP_DEST_PROT_UNREACHABLE:msg="ipdestprotunreachable"CaseIP_DEST_PORT_UNREACHABLE:msg="ipdestportunreachable"CaseIP_NO_RESOURCES:msg="ipnoresources"CaseIP_BAD_OPTION:msg="ipbadoption"CaseIP_HW_ERROR:msg="iphw_error"CaseIP_PACKET_TOO_BIG:msg="ippackettoo_big"CaseIP_REQ_TIMED_OUT:msg="ipreqtimedout"CaseIP_BAD_REQ:msg="ipbadreq"CaseIP_BAD_ROUTE:msg="ipbadroute"CaseIP_TTL_EXPIRED_TRANSIT:msg="ipttlexpiredtransit"CaseIP_TTL_EXPIRED_REASSEM:msg="ipttlexpiredreassem"CaseIP_PARAM_PROBLEM:msg="ipparam_problem"CaseIP_SOURCE_QUENCH:msg="ipsourcequench"CaseIP_OPTION_TOO_BIG:msg="ipoptiontoo_big"CaseIP_BAD_DESTINATION:msg="ipbaddestination"CaseIP_ADDR_DELETED:msg="ipaddrdeleted"CaseIP_SPEC_MTU_CHANGE:msg="ipspecmtuchange"CaseIP_MTU_CHANGE:msg="ipmtu_change"CaseIP_UNLOAD:msg="ipunload"CaseIP_ADDR_ADDED:msg="ipaddradded"CaseIP_GENERAL_FAILURE:msg="ipgeneralfailure"CaseIP_PENDING:msg="ippending"CasePING_TIMEOUT:msg="pingtimeout"CaseElse:msg="unknownmsgreturned"EndSelectGetStatusCode=CStr(status)&"["&msg&"]"EndFunctionPublicFunctionPing(sAddressAsString,sDataToSendAsString,ECHOAsICMP_ECHO_REPLY)AsLong注释:IfPingsucceeds:注释:.RoundTripTime=timeinmsforthepingtocomplete,注释:.Dataisthedatareturned(NULLterminated)注释:.AddressistheIpaddressthatactuallyreplied注释:.DataSizeisthesizeofthestringin.Data注释:.Statuswillbe0注释:注释:IfPingfails.StatuswillbetheerrorcodeDimhPortAsLongDimdwAddressAsLong注释:converttheaddressintoalongrepresentationdwAddress=inet_addr(sAddress)注释:ifavalidaddress..IfdwAddress<>INADDR_NONEThen注释:openaporthPort=IcmpCreateFile()注释:andifsuccessful,IfhPortThen注释:pingit.CallIcmpSendEcho(hPort,dwAddress,sDataToSend,Len(sDataToSend),0,ECHO,Len(ECHO),PING_TIMEOUT)注释:returnthestatusaspingsuccesandclosePing=ECHO.statusCallIcmpCloseHandle(hPort)EndIfElse:注释:theaddressformatwasprobablyinvalidPing=INADDR_NONEEndIfEndFunctionPublicSubSocketsCleanup()IfWSACleanup()<>0ThenMsgBox"WindowsSocketserroroccurredinCleanup.",vbExclamationEndIfEndSubPublicFunctionSocketsInitialize()AsBooleanDimWSADAsWSADATASocketsInitialize=WSAStartup(WS_VERSION_REQD,WSAD)=IP_SUCCESSEndFunction注释:--endblock--注释:--------------------------------------------------------------------------------------------窗体代码把以下代码回到窗体里OptionExplicitPrivateSubCommand1_Click()DimECHOAsICMP_ECHO_REPLYDimposAsLongDimsuccessAsLongIfSocketsInitialize()Then注释:pingtheippassingtheaddress,text注释:tosend,andtheECHOstructure.success=Ping((Text1.Text),(Text2.Text),ECHO)注释:displaytheresultsText4(0).Text=GetStatusCode(success)Text4(1).Text=ECHO.AddressText4(2).Text=ECHO.RoundTripTime&"ms"Text4(3).Text=ECHO.DataSize&"bytes"IfLeft$(ECHO.Data,1)<>Chr$(0)Thenpos=InStr(ECHO.Data,Chr$(0))Text4(4).Text=Left$(ECHO.Data,pos-1)EndIfText4(5).Text=ECHO.DataPointerSocketsCleanupElseMsgBox"WindowsSocketsfor32bitWindows"&"environmentsisnotsuccessfullyresponding."EndIfEndSub