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. ]