Utilice vb para editar el nombre de dominio de ping
Devuelve el siguiente código al módulo módulo BAS:
Opción explícita
Constante privada IP_SUCCESS As Long = 0
Constante privada IP_STATUS_BASE Mientras = 11000
Constante privada IP_BUF_TOO_SMALL Mientras =(11000 1)
Constante privada IP_DEST_NETWORK_No disponible Longitud alcanzable = (11000 2)
Privada constante IP_DEST_HOST_UNREACHABLE Longitud = (11000 3)
Constante privada IP_DEST_PROT_UNREACHABLE Longitud = (11000 4)
Constante privada IP_DEST_Port_Unreachable Longitud = (11000 5)
Constante privada IP_NO_RESOURCES Mientras = (11000 6)
IP constante privada _ BAD _ OPCIÓN Mientras = (11000 7)
IP constante privada _ HW _ ERROR Mientras = (11000 8)
IP constante privada _ PAQUETE _ DEMASIADO _ GRANDE Mientras =(11000 9)
IP constante privada _ REQ _ TIEMPO _ OUT Mientras =(11000 10)
IP constante privada _ BAD _ REQ Mientras =(11000 11)
IP constante privada _ BAD _ ROUTE Mientras =(11000 12)
IP constante privada _ TTL _ EXPIRADO _ TRÁNSITO Mientras =(11000 13)
IP Const Privada _ TTL _ EXPIRADO _ re Assam Mientras =(11000 14)
IP Const Privada _ PARAM _ PROBLEMA Mientras Largo =(11000 15)
IP constante privada _ FUENTE _ QUENCH Mientras =(11000 16)
IP constante privada _ OPCIÓN _ DEMASIADO _ GRANDE Mientras =(11000 17)
IP constante privada _ MAL _ DESTINO Mientras Largo = (11000 18)
IP constante privada _ DIRECCIÓN _ Eliminar Largo = (11000 19)
IP constante privada _ SPEC _ MTU _ CAMBIAR Mientras =( 11000 20)
IP Const Privada _ MTU _ CAMBIAR Mientras =(11000 21)
IP Const Privada _ DESCARGAR Mientras =( 11000 22)
Const privada IP_ADDR_Add mientras = (11000 23)
Const privada IP_GENERAL_FAILURE mientras =(11000 50)
Const privada MAX_IP_STATUS mientras = (11000 50)
IP privada constante _ PENDIENTE
As Long = (11000 255)
Constante privada PING_TIMEOUT As Long = 500
Constante privada WS _ VERSION _ REQD As Long = ampH101
Constante privada MIN_SOCKETS_REQD As Long = 1
Const privada SOCKET_ERROR As Long = -1
Const privada INADDR_NONE solamente = ampHFFFFFFFF
Const privada MAX _ wsa descripción As Long = 256 p>
Constante privada MAX _ WSASYSStatus As Long = 128
Tipo privado ICMP_OPTIONS
Ttl como bytes
Tos como bytes
Las banderas son bytes
El tamaño de la opción es bytes
Longitud de los datos de la opción
Tipo final
Tipo público ICMP_ECHO_REPLY
p>La dirección tiene la misma longitud
El estado es largo
El tiempo de ida y vuelta es el mismo
El tamaño de los datos es Largo Nota: exlinteger
Nota: Reservado como un número entero
La misma longitud que el puntero de datos
Como opción para ICMP_OPTIONS
Datos en forma de cadena * 250
Tipo final
Tipo privado WSADATA
wVersion en formato entero
wHighVersion en formato entero
szDescription (0 a MAX_WSADescription) expresado en bytes
szSystemStatus (0 a MAX_WSASYSStatus) se expresa en bytes
wMaxSockets tiene la misma longitud
wMaxUDPDG tiene la misma longitud
dwVendorInfo As Long
Tipo de finalización
Función de declaración privada IcmpCreateFile Lib "icmp.dll "() es Long
Función de declaración privada IcmpCloseHandle Lib " icmp . dll "(el identificador ByVal ICM es largo)
Función de declaración privada IcmpSendEcho Lib " ICMP . dll " (el identificador ByVal ICM es largo, ByVal DestinationAddress es largo, ByVal RequestData es una cadena, ByVal RequestSize es Long, ByVal RequestOptions es Long, ReplyBuffer es ICMP_ECHO_REPLY, ByVal ReplySize es Long, ByVal Timeout es Long)
Función de declaración privada WSAGetLastError Lib "WSOCK32. DLL "() siempre y cuando
Función de declaración privada WSAStartup Lib "WSOCK32. DLL "(ByVal wVersionRequired As Long, lpWSADATA As WSADATA) as long
Función de declaración privada WSACleanup Lib "WSOCK32.
DLL "() tiene la misma longitud
Función de declaración privada gethostname Lib "WSOCK32. DLL" (ByVal szHost as String, ByVal dwHostLen as Long) as Long
Función de declaración privada gethostbyname Lib "WSOCK32. DLL" (ByVal szHost As String) siempre
Declaración privada del banco de memoria de subcopia "kernel32" alias "RtlMoveMemory" (xDest As Any, xSource As Any, ByVal nbytes As Long)
Función de declaración privada inet_addr Lib "WSOCK32.
DLL" (ByVal s As String)
Función pública GetStatusCode (longitud del estado) en forma de cadena
Mostrar mensaje como cadena
Seleccionar estado de caso
Caso IP_SUCCESS: msg = "ip exitosa"
Caso INADDR_NONE: msg = "inet_addr: Formato de IP incorrecto"
caso IP_BUF_TOO _ SMALL: msg = " IP BUF TOO _ PEQUEÑO "
Caso IP _ DEST _ Red _ Inalcanzable: msg = "red de destino ip inalcanzable"
IP de caso _ DEST _ Host_unreachable: msg = "host de destino ip inalcanzable" p>
Caso IP dest prot inalcanzable: msg = "ip dest prot inalcanzable"
Caso IP_DEST_PORT _Unreachable: msg = "ip destino puerto inalcanzable"
Caso IP _ NO _ RECURSOS: msg= "IP SIN RECURSOS"
Caso IP_BAD_OPTION: msg= "ip mala opción "
Caso IP_HARDWARE_ERROR: msg= "IP HARDWARE_ERROR"
Caso IP_PACKET_TOO_BIG: msg = "PAQUETE IP DEMASIADO GRANDE"
p>
Caso IP_REQ_TIMED_OUT: msg = "ip req timeout"
Caso IP_BAD_REQ: msg = "ip bad req" p>
Caso IP_BAD_ROUTE: msg = "ip ruta incorrecta"
Caso IP_TTL_EXPIRED_TRANSIT:msg="IP TTL TRANSIT EXPIRADO"
Caso IP_TTL_EXPIRED_resemb:msg="IP TTL EXPIRADO resemb "
Caso IP_PARAM_PROBLEM:msg="IP PARAM_PROBLEM"
Caso IP_SOURCE_QUENCH:msg="IP SOURCE QUENCH"
CasoIP_ OPTION_TOO_BIG:msg="OPCIÓN IP DEMASIADO_BIG "
Caso IP_BAD_DESTINATION:msg="IP MAL DESTINO"
CasoIP_ADDR_DELETED :msg = "dirección IP eliminada"
Caso IP_SPEC_MTU_CHANGE:msg = "IP SPEC MTU CHANGE"
Caso IP_MTU_CHANGE:msg = " IP MTU_CHANGE "
Caso IP_UNLOAD: msg = "ip unload "
Caso IP_ADDR_Added: msg = "dirección IP agregada "
Caso IP_GENERAL_FAILURE:msg="IP GEN
RAL FAILURE "
Caso IP_PENDING: msg= "ip pendiente "
Caso PING_TIMEOUT: msg= "ping timeout"
Otros casos: msg= "Return Unknown Mensaje "
Finalizar selección
GetStatusCode = CStr(status)"["amp;MSGamp"]"
Finalizar función
El La función pública Ping (dirección como cadena,
sDataToSend como cadena,
ECHO como ICMP_ECHO_REPLY) tiene la misma longitud
Nota: si Ping tiene éxito: p >
Nota: tiempo de ida y vuelta (milisegundos),
Nota: los datos de la dirección son los datos devueltos (terminados en nulo)
Nota:
.Nota: tamaño de datos es el tamaño de la cadena en .data
Nota: p>
Nota: si el ping falla, el estado será código de error
Dim. hPort As Long
Dim dwAddress
Nota: convierta la dirección en una presentación larga
dwAddress = inet_addr(address)
Nota: Si es una dirección válida...
Si dwAddress lt gt entonces no hay ninguna
Nota: abra un puerto
hPort = IcmpCreateFile()
Nota: si tiene éxito,
si hPort entonces
Nota: haga ping.
Llame a IcmpSendEcho(hPort, dwAddress, sdatosend, Len(sdatosend), 0, Echo, Len(ECHO), PING_TIMEOUT)
Nota: cambiar el estado Devuelve como ping exitoso y cerrado
Ping = ECHO.status
Llamar a IcmpCloseHandle (hPort)
Si... terminará
En caso contrario:
Nota: El formato de la dirección puede no ser válido
Ping = INADDR_NONE
Terminará si...
Finalizar función
Public Sub SocketsCleanup()
si WSACleanup() <> entonces 0
MsgBox "Se produjo un error de Windows Sockets durante la limpieza. ", signo de exclamación VB
Terminará si...
Finalizar conector
La función pública SocketsInitialize() es un valor booleano
Dim· WSAD
socket inicializar = wsa startup(WS_VERSION_REQD,WSAD) = IP_SUCCESS
Finalizar función
Nota: - Finalizar bloque - Nota: p> p>
-
Código de formulario
Devuelve el siguiente código al formulario.
Opción explícita
Subcomando privado 1_Click()
Como eco difuso de ICMP_ECHO_REPLY
Posición de longitud variable
La atenuación tarda tanto como el éxito
Si SocketsInitialize() entonces
Nota: hacer ping a IP mediante dirección, texto
Nota: estructuras de envío y eco
Éxito = Ping((Text1.Text),(Text2.Text),Echo)
Nota: Mostrar resultados
Texto4(0). Texto = GetStatusCode(Éxito)
Texto 4(1). texto = eco. Dirección
Texto 4(2). texto = eco. Amplificador de tiempo de ida y vuelta"Sra."
Texto 4(3). texto = eco. tamaño de datos amp "bytes"
Si deja $(ECHO.Data, 1) lt; gtChr$(0) entonces
pos = InStr(ECHO.Data, Chr$( 0) ))
Texto 4(4). Texto = Left$(ECHO. data, posición 1)
Terminará si...
Texto 4(5). texto = eco. Puntero de datos
SocketsCleanup
Otro
MsgBox El entorno "amp" de Windows Sockets para Windows no respondió correctamente. "
Terminará si...
Conector final
Hay muchos códigos de este tipo en Internet. Puedes usar Baidu para echar un buen vistazo. y luego podrás obtener lo que deseas. La respuesta que necesitas
En primer lugar, debes establecer un estándar: cuánto tiempo se considera rápido y cuánto tiempo se considera lento.
(El verde es rápido, el rojo es lento y escribirás el tiempo más tarde).
Luego juzga el tiempo de regreso y compáralo con tu estándar para obtener el tiempo con respecto al estándar de velocidad
La precisión, especialmente la velocidad de un sitio, es difícil. ¡Puedes conocer objetivamente la velocidad de un sitio determinado!