Netzwerk - IP-Addresse(n) und Hostnamen des Rechners ermitteln



  • Ich hätte da nur 2 Fragen:

    1. Kann ich andere Netzwerkuser und deren IP herausfinden (, wenn ja wie??).

    2. Wenn der Computer 2 Ip's hat (z.B. Netzwerk und Internet) wie kann ich beide herausfinden??
    (bei 1 IP einfach TPowersock->LocalIP)

    Danke im Voraus 😉

    [ Dieser Beitrag wurde am 03.05.2002 um 21:40 Uhr von Jansen editiert. ]



  • Zu Frage 1 fällt mir nur ein, jede Adresse im eigenen Netz/Subnetz anpingen. Damit kriegt man aber nur die Adressen der Rechner, die gerade angeschaltet sind.

    Zu Frage 2, Beispiel:
    Edit1->Text=HostInfo(ListBox1->Items);

    #include <winsock2.h>
    
    AnsiString __fastcall TForm1::HostInfo(TStrings *IPListe)
    {
        AnsiString HostName;
        char *adr;
        char hostname[64];
        WSADATA SockVer;
        hostent *hostinfo;
        in_addr ip;
    
        // Winsock initiieren
        if(WSAStartup(MAKEWORD(2,0), &SockVer))
        {   ShowMessage("WSAStartup fehlgeschlagen");
            return("");
        }
    
        // Hostnamen auslesen
        if(gethostname(hostname, sizeof(hostname)))
        {   switch(WSAGetLastError())
            {   case WSAEFAULT          :   ShowMessage("WSAEFAULT");
                                            break;
                case WSANOTINITIALISED  :   ShowMessage("WSANOTINITIALISED");
                                            break;
                case WSAENETDOWN        :   ShowMessage("WSAENETDOWN");
                                            break;
                case WSAEINPROGRESS     :   ShowMessage("WSAEINPROGRESS");
                                            break;
                default :   ShowMessage("Unknown Errorcode");
            }
            WSACleanup();
            return("");
        }
    
        // Hostinfo anhand des Hostnamens holen
        if((hostinfo=gethostbyname(hostname))==NULL)
        {   switch(WSAGetLastError())
            {   case WSANOTINITIALISED  :   ShowMessage("WSANOTINITIALISED");
                                            break;
                case WSAENETDOWN        :   ShowMessage("WSAENETDOWN");
                                            break;
                case WSAHOST_NOT_FOUND  :   ShowMessage("WSAHOST_NOT_FOUND");
                                            break;
                case WSATRY_AGAIN       :   ShowMessage("WSATRY_AGAIN");
                                            break;
                case WSANO_RECOVERY     :   ShowMessage("WSANO_RECOVERY");
                                            break;
                case WSANO_DATA         :   ShowMessage("WSANO_DATA");
                                            break;
                case WSAEINPROGRESS     :   ShowMessage("WSAEINPROGRESS");
                                            break;
                case WSAEFAULT          :   ShowMessage("WSAEFAULT");
                                            break;
                case WSAEINTR           :   ShowMessage("WSAEINTR");
                                            break;
                default :   ShowMessage("Unknown Errorcode");
            }
            WSACleanup();
            return("");
        }
    
        // IPs auslesen und in lesbare Form umwandeln
        for(int x=0; (adr=hostinfo->h_addr_list[x])!=NULL; x++)
        {   ip.S_un.S_addr=*((unsigned long*)adr);
            IPListe->Add(inet_ntoa(ip));
        }
        HostName=hostinfo->h_name;
    
        WSACleanup();
        return(HostName);
    }
    

    [ Dieser Beitrag wurde am 03.05.2002 um 21:41 Uhr von Jansen editiert. ]


Anmelden zum Antworten