Как получить свой ip в delphi?

Пользователь

от jeromy_ruecker , в категории: Другие , 2 года назад

Как получить свой ip в delphi?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от bart , год назад

@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-адрес, вызвав фу

Пользователь

от lilla.herman , год назад

@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-адрес в виде строки.