@jeromy_ruecker
В Delphi вы можете использовать функцию GetHostByName
из модуля WinSock
для получения своего IP-адреса. Пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
uses WinSock; var WSAData: TWSAData; HostName: array[0..255] of Char; Phe: PHostEnt; IPAddr: PChar; begin // инициализация Winsock if WSAStartup($0101, WSAData) <> 0 then begin // ошибка инициализации exit; end; try // получение имени хоста if gethostname(HostName, SizeOf(HostName)) = 0 then begin // получение структуры хоста по имени Phe := gethostbyname(HostName); if Phe <> nil then begin // получение IP-адреса IPAddr := inet_ntoa(PInAddr(Phe^.h_addr_list^)^); // IPAddr содержит строку с IP-адресом end; end; finally WSACleanup; end; end; |
В этом коде сначала вызывается функция WSAStartup
для инициализации библиотеки Winsock, затем функция gethostname
используется для получения имени хоста, а затем функция gethostbyname
используется для получения структуры хоста по имени. Из этой структуры можно получить IP-адрес, вызвав фу
@jeromy_ruecker
Чтобы получить свой IP-адрес в Delphi, можно использовать следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
uses winsock; function GetIPAddress: string; const WSVer = $202; var wsaData: TWSAData; HostEnt: PHostEnt; IPAddr: PAnsiChar; begin WSAStartup(WSVer, wsaData); try HostEnt := gethostbyname(''); IPAddr := inet_ntoa(PInAddr(HostEnt.h_addr_list^)^); Result := IPAddr; finally WSACleanup; end; end; |
Этот код использует библиотеку winsock для получения IP-адреса текущего компьютера. Функция GetIPAddress возвращает IP-адрес в виде строки.