Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo llama VB al comando ping para determinar si está conectado?

¿Cómo llama VB al comando ping para determinar si está conectado?

IP_PACKET_TOO_BIG Mientras = (11000 + 9)

Const privada IP_REQ_TIMED_OUT Mientras = (11000 + 10)

Const privada IP_BAD_REQ Mientras = (11000 + 11)

Const privada IP_BAD_ROUTE mientras = (11000 + 12)

Const privada IP_PACKET_TOO_BIG mientras = (11000 + 9) OpcionesData mientras

Tipo de fin

Tipo privado ICMP_ECHO_REPLY

Dirección tan larga

estado Tan larga

Tiempo de ida y vuelta tan larga

Tamaño de datos como

Puntero de datos Tan largas

Opciones como ICMP_OPTIONS

Datos como cadena * 250

Tipo final

Tipo privado WSADATA

wVersion como entero

wHighVersion como entero

szDescription(0 a szDescription(0 a MAX_WSADescription) como byte

szSystemStatus(0 a MAX_WSASYSStatus) como byte

wMaxSockets siempre

wMaxUDPDG siempre

dwVendorInfo siempre

Tipo de fin

Declarar públicamente la función timeGetTime Lib "winmm .dll" () Mientras

Función de declaración privada WSAStartup Lib "wsock32" (ByVal wVersionRequired Mientras, lpWSADATA Como WSADATA) Mientras

Función de declaración privada WSACleanup Lib "wsock32" ( ) El tiempo que dure

Función de declaración privada IcmpCreateFile Lib "icmp.dll" () El tiempo que dure

Función de declaración privada inet_addr Lib "wsock32" (ByVal s As String) El tiempo que dure

Función de declaración privada IcmpCloseHandle Lib "icmp.dll" (ByVal IcmpHandle siempre y cuando)

Función de declaración privada IcmpSendEcho Lib "icmp.dll" (ByVal IcmpHandle mientras, ByVal DestinationAddress mientras, ByVal RequestData como cadena, ByVal

RequestSize Mientras, ByVal RequestOptions Mientras, ReplyBuffer Como ICMP_ECHO_REPLY, ByVal ReplySize Mientras, ByVal Timeout Mientras) Mientras

'Función de declaración privada WSAGetLastError Lib " wsock32" () Mientras

'Función de declaración privada gethostname Lib "wsock32" (ByVal szHost como cadena, ByVal dwHostLen mientras) mientras

' Función de declaración privada gethostbyname Lib "wsock32" (ByVal szHost como cadena) mientras p>

'Private Declare Sub CopyMemory Lib "kernel32" Alias ​​​​" RtlMoveMemory" (xDest As Any, xSource As Any, ByVal nbytes As Long)

Función privada GetStatusCode(status As Long) ) Como cadena

En caso de error, Ir a ErrLine

Atenuar mensaje como cadena

GetStatusCode = ""

Seleccionar estado del 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_small"

Caso IP_DEST_NET_UNREACHABLE: Msg = "ip dest net inalcanzable"

Caso IP_DEST_HOST_UNREACHABLE: Msg = "Host de destino inalcanzable"

Caso IP_DEST_PROT_UNREACHABLE: Msg = "Puerto de destino inalcanzable"

p>

Caso IP_DEST_PORT_UNREACHABLE: Msg = "Puerto de destino inalcanzable"

Caso IP_NO_RESOURCES: Msg = "ip sin recurso"

Caso IP_BAD_OPTION: Msg = "ip mala opción"

Caso IP_HW_ERROR: Msg = "ip hw_error"

Caso IP_PACKET_TOO_BIG: Msg = "ip paquete too_big"

Caso IP_REQ_TIMED_OUT: Msg = "ip heavy request timeout"

Caso IP_BAD_REQ: Msg = "ip bad re-solicitud"

Caso IP_BAD_ROUTE: Msg = "ip bad route"

Caso IP_TTL_EXPIRED_TRANSIT: Msg = "ip ttl tránsito caducado"

Caso IP_TTL_EXPIRED_REASSEM: Msg = "ip ttl expiró reensamblaje"

C

ase IP_PARAM_ PROBLEM: Msg = "problema de parámetro de ip"

Caso IP_SOURCE_QUENCH: Msg = "extinción de fuente de ip"

Caso IP_OPTION_TOO_BIG: Msg = "opción de ip demasiado grande"

Caso IP_BAD_DESTINATION: Msg = "ip objetivo incorrecto"

Caso IP_ADDR_DELETED: Msg = "dirección IP eliminada"

Caso IP_SPEC_MTU_CHANGE: Msg = "cambio de mtu de especificación de IP"

Caso IP_MTU_CHANGE: Msg = "ip mtu_change"

Caso IP_UNLOAD: Msg = "ip unload"

Caso IP_ADDR_ADDED: Msg = "ip agregar dirección"

p>

Caso IP_GENERAL_FAILURE: Msg= "Fallo general de IP"

Caso IP_PENDING: Msg= "IP pendiente"

Caso PING_TIMEOUT: Msg= "ping timeout "

Caso más: Msg = "mensaje desconocido devuelto"

Finalizar selección

GetStatusCode = Msg

Salir de la función

ErrrLine:

Función final

Ping de función privada (sAddress como cadena, sDataToSend como cadena, ECHO como ICMP_ECHO_REPLY) siempre

En caso de error, vaya a ErrLine

Atenuar hPort mientras

Atenuar dwAddress mientras

dwAddress = inet_addr(sAddress)

Si dwAddress <> INADDR_NONE Entonces

hPort = IcmpCreateFile()

Si hPort entonces

Llame a IcmpSendEcho(hPort, dwAddress, sDataToSend, Len(sDataToSend), 0, ECHO, Len(ECHO) , PING _TIMEOUT)

Ping = ECHO.status

Llamar a IcmpCloseHandle(hPort)

Finalizar si

Si no

Ping = INADDR_NONE

Finalizar si

Salir de la función

ErrrLine:

Ping = INADDR_NONE

Fin Función

Función pública PingIP(ByVal szIp As String) como booleana

En caso de error, GoTo ErrLine

Atenuar WSAD como WSADATA

Atenuar ECHO como ICMP_ECHO_REPLY

Atenuar ret siempre

'

Retraso 150

PingIP = False

PingTime = Vacío

Si WSAStartup(WS_VERSION_REQD, WSAD) = IP_SUCCESS Entonces

ret = Ping( Trim(szIp), "tanaya", ECHO)

PingTime = ECHO.

Función de salida

Finalizar si

Finalizar si

Salir de la función

ErrLine:

Finalizar función

Luego crea un formulario y un comando

Subcomando privado1_Click ()

Si PingIP("la IP a la que necesita acceder")=True Entonces

'Agregue el código que necesita para ejecutarlo usted mismo

else

'Agrega el código que necesitas ejecutar cuando no estés conectado a Internet

end if.