Avíza

Zistite svoju IP pomocou Delphi

Zistite svoju IP pomocou Delphi

Internet to a internet, že. Každý chce byť dnes na internete. Každý chce dnes programovať internet.

Jednou z najzaujímavejších úloh pri začatí kódovania pre internet je spôsob získania IP adresy počítača pripojeného k internetu.

IP? TCP?

Jednoducho technické: internet je postavený na pripojeniach TCP / IP. Časť TCP popisuje, ako dva počítače nastavujú vzájomné spojenie a prenášajú údaje. Časť IP sa zaoberá predovšetkým tým, ako získať správu smerovanú cez internet. Každý pripojený stroj má jedinečnú IP adresu, ktorá umožňuje ostatným zistiť cestu k akémukoľvek počítaču na celom svete (alebo presne na celom svete).

Používa Winsock

Aby sme získali IP adresu počítača, ktorý používate pri pripojení na internet, musíme zavolať niektoré z funkcií API * definovaných * v jednotke Winsock.

Vytvoríme GetIPFromHost funkcia, ktorá volá niekoľko funkcií rozhrania Winsock API, aby získala IP. Predtým, ako budeme môcť používať funkcie WinSock, musíme mať platnú reláciu. Táto relácia je vytvorená pomocou funkcie WinSock WSAStartup. Na konci našej funkcie sa uskutoční výzva na vyčistenie protokolu SAC, aby sa ukončilo používanie rozhraní API rozhrania Windows Sockets. Na získanie IP adresy počítača musíme použiť GetHostByName v spojení s GetHostName. Každý počítač sa nazýva hostiteľ a môžeme ho získať pomocou špeciálneho volania funkcie: GetHostName. Potom pomocou GetHostByName získame IP adresu súvisiacu s týmto menom hostiteľa.

Získajte IP Delphi.Project.Code

Štart Delphi a miesto jedného gombík a dva editovať na novovytvorenom formulári. Pridajte GetIPFromHost fungovať implementačnej časti vašej jednotky a priraďovať nasledujúci kód obsluhe udalosti OnClick tlačidla (nižšie):

použitie Winsock;
funkcie GetIPFromHost
(var Názov hostiteľa, IPaddr, WSAErr: povrázok): Boolean;
typ
Názov = pole0… 100 z char;
PName = ^ Názov;
var
HEnt: pHostEnt;
HName: PName;
WSAData: TWSAData;
i: Celé číslo;
začať
Výsledok: = nepravda;
ak WSASartart ($ 0101, WSAData) 0 potom začnite
WSAErr: = 'Winsock neodpovedá. "';
Východ;
koniec;
IPaddr: = ";
Nové (HName);
ak GetHostName (HName ^, SizeOf (Name)) = 0 thenbegin
Názov hostiteľa: = StrPas (HName ^);
HEnt: = GetHostByName (HName ^);
pre i: = 0 na HEnt ^ .h_length - 1 robiť
IPaddr: =
Concat (ipaddr,
IntToStr (Ord (HEnt ^ .h_addr_list ^ i)) + '.');
SetLength (IPaddr, Dĺžka (IPaddr) - 1);
Výsledok: = True;
koniec
inak začať prípad WSAGetLastError z
WSANOTINITIALISED: WSAErr: = 'WSANotInitialised';
WSAENETDOWN: WSAErr: = 'WSAENetDown';
WSAEINPROGRESS: WSAErr: = 'WSAEInProgress';
koniec;
koniec;
Likvidáciu (HName);
WSACleanup;
koniec;
procedúra TForm1.Button1Click (Sender: TObject);
var
Host, IP, Err: povrázok;
začať
ak GetIPFromHost (Host, IP, Err) potom začnite
Edit1.Text: = Host;
Edit2.Text: = IP;
koniec
inak
MessageDlg (Err, mtError, mbOk, 0);
koniec;

Pozri si video: zistenie IP adresy (Jún 2020).