Diccionario WiFi de lenguaje fácil
#¿Contiene? & ltstdio.h & gt
#¿Contiene? <windows.h>?
#¿Incluir? & ltwininet.h & gt
#pragma? comentario(lib,? "ws2_32.lib")
#pragma? anotación(lib,?"wininet.lib")
typedef? DWORD (_ _ stdcall? * IcmpSendEcho) (HANDLE, IPAddr, LPVOID, WORD, PIP_OPTION_INFORMATION, LPVOID, DWORD, DWORD); ¿manejar? (__stdcall?* icmp crear archivo) (void);
typedef? ¿Booleano? (__stdcall?*IcmpCloseHandle)(handle);
icmpcreatefileficimpcreatefile;
IcmpSendEchofIcmpSendEcho
IcmpCloseHandle? fIcmpCloseHandle
¿Booleano? init fun(void)
{
HMODULE? lModl
lmo dl = (HMODULE) LoadLibrary? ("iphlapi.dll");
¿Si? (lModl==0)? {
printf("¿Cargar? ¿Eso? ¿Biblioteca? ¿Hay alguna? ¡Error! \n "); Falso;
}
De lo contrario {
fIcmpCreateFile = (IcmpCreateFile) GetProcAddress? (lModl, "icmp crear archivo");
fIcmpSendEcho = (IcmpSendEcho)GetProcAddress? (lModl, "IcmpSendEcho");
fIcmpCloseHandle = (IcmpCloseHandle)GetProcAddress? (lModl, "IcmpCloseHandle");
¿Si? (fIcmpCreateFile==NULL?||?fIcmpSendEcho==NULL?||?fIcmpCloseHandle == NULL ) {
printf ("¿Cargar? ¿Esa? ¿Función? ¿Está ahí? ¡Error! \n ");
¿Volver? Falso;
}
¿Devolver? Verdadero;
}
}
LPHANDLE? obteniendo identificador(void)
{
¿Identificador? pHandle
pHandle = fIcmpCreateFile();
¿Si? ((int)pHandle = =-1) {
printf("¿Cargar? ¿ICMP? ¿Manejar? ¿Hay alguno? ¡Error!\n ");
¿Regresión? 0;
}
En caso contrario {
¿Devolver? (LPHANDLE)pHandle;
}
}
¿Booleano? ping(LPSTR?pIPAddr)
{
¿Identificar? iHwnd
iHwnd = (HANDLE) obteniendo HANDLE();
IPAddr? pAddr
pAddr =
(dirección IP)inet_addr? ((char?*)pip addr);
icmp_echo_reply? pData
for(int?i=1;i<=LoopSendi++)
{
fIcmpSendEcho(iHwnd, pAddr, NULL, 0, NULL, (LPVOID) &pData,sizeof(icmp_echo_reply),0);
¿Si? (pData.Status==0)
{
printf("Resultados devueltos por la prueba de ping:? Time=%dms?TTL=%d?\n", (int) pData.tiempo de ida y vuelta, (int)pData opciones
}
Otro
{
printf(" Ping" Prueba fallida...\n");
}
}
¿Y si? (!fIcmpCloseHandle(iHwnd))? printf("¿Cerrar? ¿Identificador? ¿Hay alguno? ¡Error! \n ");
¿Regresar? Verdadero;
}
En cuanto a la función principal, puede escribirla usted mismo y simplemente pasar una dirección IP a la función Ping para ejecutarla.
Código del módulo VB correspondiente.
¿Privado? ¿declarar? ¿Función? ¿IcmpCrearArchivo? ¿Lib? ¿"iphlpapi.dll"? ()?como qué? Largo
¿Privado? ¿declarar? ¿Función? ¿IcmpEnviarEcho? ¿Lib? ¿"iphlpapi.dll"? (¿bydil? IcmpHandle? ¿como qué? dragón? bydil. Dirección de destino? ¿como qué? dragón? bydil. RequestData? ¿como qué? Cadena,? bydil. RequestSize? ¿como qué? dragón? bydil. RequestOptions ? como ? búfer de respuesta ? como ? bydil ? ¿Como qué? Largo
¿Privado? ¿declarar? ¿Función? ¿IcmpCloseHandle? ¿Lib? ¿"iphlpapi.dll"? (¿ByDir? ¿IcmpHandle? ¿Como qué? ¿Largo)? ¿Como qué? Largo
¿Privado? ¿declarar? ¿Función? inet_addr? ¿Lib? ¿"wsock32.dll"? (¿byadil? cp? ¿como qué? cadena)? ¿Como qué? Largo
¿Privado? ¿tipo? IP_options_info
ttl? ¿Como qué? Byte ''Tiempo de vivir
Tosas? ¿byte? ? Tipo de servicio
¿Marcar? ¿Como qué? Bytes "" Bandera de encabezado IP
OpcionesTamañoAs? ¿byte? ? Tamaño de los datos de opciones, en bytes
OptionsData? ¿Como qué? ¿Es largo? Puntero de datos de opciones
¿Fin? Tipo
¿Privado? ¿tipo? ICMP_ECHO_REPLY
¿Dirección? El largo '''''''''' contiene la dirección IP a la que se responde.
¿Estado a? long'' contiene el estado de la respuesta (consulte la sección Constantes más adelante).
¿Medición de ida y vuelta? ¿Es largo? ? Tiempo de ida y vuelta RTT (milisegundos)
DataSizeAs? ¿Entero? Tamaño de los datos de respuesta (bytes)
¿Suscrito? ¿Entero? ¿Mantener
ptrDataAs? ¿Es largo? ? Puntero de datos de respuesta
¿Opción a? ¿IP_OPCIÓN_INFO? Opciones de respuesta
¿Datos como servicio? ¿Cadena? *?250
¿Fin? Tipo
¿Público? ¿tipo? Rtn _ ICMPTestMessage
¿Dirección? ¿Como qué? ¿Estado de línea
? ¿Como qué? ¿Cadena? '' se escribe usando funciones.
¿La prueba fue exitosa? ¿Como qué? ¿Booleano? '' ¿Prueba exitosa?
¿Tiempo? ¿Como qué? ¿Tamaño largo? ¿Como qué? ¿TTL largo? ¿Como qué? ¿Final largo
? Tipo
¿Público? ¿Función? RtnICMPTestMessage(ByVal?TestIP?¿Como qué?Cadena,?ByDir.Timeout?AsWhat?Dragon?ByDir.Packed?AsWhat?Long)? ¿Como qué? Rtn _ ICMPTestMessage
¿Atenuado? ¿IcmpMango? ¿Como qué? ¿IcmpHandle largo
? =?icmp crear archivo''''Crear un identificador de prueba.
¿Oscuro? ¿ICMPResponder? ¿Como qué? ICMP_ECHO_REPLY
¿Atenuado? ¿LongIPAdde? ¿Como qué? Long
LongIPAddr? =?inet_addr(TestIP)
¿Atenuado? ¿Enviar datos? ¿Como qué? La cadena "" está configurada para el tamaño del paquete.
¿Enviar datos? =?espacio(tamaño del paquete)
IcmpSendEcho? ¿IcmpMango? LongIPAddr? ¿Enviar datos? len(EnviarDatos),? 0,?ICMPRespuesta,? len(ICMPRespuesta)? Tiempo de espera
¿Y si? ICMPRespuesta. ¿estado? =?0?Entonces
RtnICMPTestMessage. ¿DIRECCIÓN? =?TestIP
RtnICMPTestMessage.size? =?ICMPRespuesta. Tamaño de datos
RtnICMPTestMessage. ¿estado? =?RtnICMPState(ICMPReply.State)
RtnICMPTestMessage.time? =?ICMPRespuesta. Tiempo de ida y vuelta
RtnICMPTestMessage.ttl? =?ICMPRespuesta. Opciones.ttl
RtnICMPTestMessage.test¿Éxito? =?true''''La prueba fue exitosa.
Otro
RtnICMPTestMessage. ¿DIRECCIÓN? =?PruebaIP
RtnICMPTestMessage. ¿estado? =?RtnICMPState(ICMPReply.State)
RtnICMPTestMessage.testSuccess? =?False ''La prueba falló.
¿Fin? Si
IcmpCloseHandle? IcmpHandle
¿Fin? Función