Computerwissenschaften

Holen Sie sich meine IP mit Delphi-Programmierung

Internet dies und Internet das. Jeder möchte heutzutage im Internet sein. Jeder möchte heutzutage das Internet programmieren.

Eine der interessantesten Aufgaben beim Codieren für das Internet ist das Abrufen der IP-Adresse eines mit dem Internet verbundenen Computers.

 

IP? TCP?

Einfach technisch: Das Internet basiert auf TCP / IP-Verbindungen. Der TCP-Teil beschreibt, wie zwei Computer eine Verbindung untereinander herstellen und Daten übertragen. Der IP-Teil befasst sich hauptsächlich mit dem Weiterleiten einer Nachricht über das Internet. Jeder angeschlossene Computer verfügt über eine eindeutige IP-Adresse, mit der andere Benutzer einen Pfad zu jedem Computer im World Wide Web (oder genau zur Welt) ermitteln können.

 

Verwendet Winsock

Um die IP-Adresse des Computers zu erhalten, den Sie verwenden, wenn Sie mit dem Internet verbunden sind, müssen Sie einige der API-Funktionen aufrufen, die in der Winsock-Einheit * definiert * sind.

Wir werden eine GetIPFromHost- Funktion erstellen , die mehrere Winsock-API-Funktionen aufruft, um die IP abzurufen . Bevor wir überhaupt WinSock-Funktionen verwenden können, müssen wir eine gültige Sitzung haben. Diese Sitzung wird mit der WinSock WSAStartup-Funktion erstellt. Am Ende unserer Funktion wird SAC Leanup aufgerufen, um die Verwendung der Windows Sockets-APIs zu beenden. Um die IP-Adresse des Computers zu erhalten, müssen wir GetHostByName in Verbindung mit GetHostName verwenden. Jeder Computer wird als Host bezeichnet, und wir können den Hostnamen mit einem speziellen Funktionsaufruf abrufen: GetHostName. Wir verwenden dann GetHostByName, um die IP-Adresse zu erhalten, die sich auf diesen Hostnamen bezieht.

 

Holen Sie sich IP Delphi.Project.Code

Starten Sie Delphi und platzieren Sie eine Schaltfläche und zwei Bearbeitungsfelder in einem neu erstellten Formular. Fügen Sie die GetIPFromHost-  Funktion zum Implementierungsteil Ihres Geräts hinzu und weisen Sie dem OnClick-Ereignishandler einer Schaltfläche (unten) den folgenden Code zu:

benutzt Winsock; 
Funktion GetIPFromHost 
( var Hostname, IPaddr, WSAErr: Zeichenfolge ): Boolean; 
Typ 
 Name=Array [0..100] von Char; 
PName=^ Name; 
var 
 HEnt: pHostEnt; 
HName: PName; 
WSAData: TWSAData; 
i: Ganzzahl; 
begin 
 Ergebnis:=False; 
 Wenn WSAStartup ($ 0101, WSAData) 0, dann beginne
 WSAErr:='Winsock antwortet nicht. "'; 
Beenden; 
 Ende ; 
IPaddr:=''; 
Neu (HName); 
 wenn GetHostName (HName ^, SizeOf (Name))=0 thenbegin 
 HostName:=StrPas (HName ^); 
HEnt:=GetHostByName (HName ^); 
 für i:=0 bis HEnt ^ .h_length - 1 do 
 IPaddr:=
Concat (IPaddr, 
IntToStr (Ord (HEnt ^ .h_addr_list ^ [i ])) + '.'); 
SetLength (IPaddr, Length (IPaddr) - 1); 
Ergebnis:=True; 
 Ende 
sonst Fall beginnen WSAGetLastError von
 WSANOTINITIALISED: WSAErr:='WSANotInitialised'; 
WSAENETDOWN: WSAErr:='WSAENetDown'; 
WSAEINPROGRESS: WSAErr:='WSAEInProgress'; 
 end ; 
 end ; 
Dispose (HName); 
WSACleanup; 
end ; 
procedure TForm1.Button1Click (Sender: TObject); 
var 
 Host, IP, Err: string ; 
begin  
 if GetIPFromHost (Host, IP, Err ) dann beginne
 Edit1.Text:=Host; 
Edit2.Text:=IP; 
 end  
 else 
 MessageDlg (Err, mtError, [mbOk], 0); 
end ;

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.