Implementación de nsLookUp.exe

LookUp.exe realización de
la yuprxk original, finalmente liberado el 08/05/2014 12:09:42 543 lecturas favoritas
ampliar
d

#include <WinSock2.h>
#include <iostream>
 
#pragma comment (lib, "ws2_32.lib")
 
usando el espacio de nombres std;
int handle_error ()
{
    WSACleanup ();
    volver EXIT_FAILURE;
}
int main (int __argc, char ** __argv)
{
    WSADATA wsa;
    if (0! = WSAStartup (MAKEWORD (2,2), & wsa))
    {
        cerr << "WSAStartup () falló!" << endl;
        return handle_error ();
    }
    PHOSTENT pHostEnt = NULL;
    IN_ADDR addr;
    if (__argc == 2)
    {
        if (__argv [1] &&
        {
            addr.s_addr = inet_addr (__ argv [1]); // ip 地址
            if (INADDR_NONE == addr.s_addr)
            {
                cerr << __argv [1] << "inválido addr!" << endl;
                return handle_error ();
            }
            pHostEnt = gethostbyaddr ((const char *) y addr, sizeof (sockaddr), AF_INET);
        }
        else
        {
            pHostEnt = gethostbyname (__ argv [1]);
        }
    }
    else
    {
        cout << "entrada como: \ n \ t lookup.exe www.sina.com \ n \ t lookup.exe 127.0.0.1" << endl;
        return handle_error ();


    {
        cerr << "Error de búsqueda:" << WSAGetLastError () << endl;
        return handle_error ();
    }
    cout << "nombre oficial:" << pHostEnt-> h_name << endl;
    
    if (* pHostEnt-> h_aliases)
    {
        cout << "aliases:" << endl;
        for (char ** list = pHostEnt-> h_aliases; * list! = NULL; list ++)
        {
            cout << "\ t" << * list << endl;
        }
    }
    switch (pHostEnt-> h_addrtype)
    {
    case AF_INET:
        cout << "AF_INET";
        rotura;
    caso AF_INET6:
        cout << "AF_INET6";
        rotura;
    defecto:
        cout << "¡Tipo desconocido!" ;
        rotura;
    }
    cout << ", Tipo-Longitud:" << pHostEnt-> h_length << endl;
 
    cout << "addr_list:" << endl;
    for (char ** list = pHostEnt-> h_addr_list; * list! = NULL; list ++)
    {
        memcpy (& addr.s_addr, list, pHostEnt-> h_length);
        cout << "\ t" << inet_ntoa (addr) << endl;
    }
    // 清理 资源
    WSACleanup ();
    volver EXIT_SUCCESS;
}


Resultados de ejecución:

> lookup.exe www.sina.com
nombre oficial: polaris.sina.com.cn
alias:
        www.sina.com
        us.sina.com.cn
        news.sina.com.cn
        jupiter.sina.com.cn
AF_INET, Tipo -Longitud: 4
add__list:
        236.244.14.0

> lookup.exe 127.0.0.1
nombre oficial: zeek-PC
AF_INET, Tipo-Longitud: 4
addr_list:
        236.240.32.0

————————————————
Declaración de derechos de autor: Este artículo es un artículo original del blogger de CSDN "yuprxk", siguiendo el acuerdo de derechos de autor CC 4.0 BY-SA, adjunte el enlace original y esta declaración para su reimpresión .
Enlace original: https://blog.csdn.net/yuprxk/article/details/25294935

17 artículos originales publicados · Me gusta 230 · Visitas 340,000+

Supongo que te gusta

Origin blog.csdn.net/cxu123321/article/details/105572313
Recomendado
Clasificación