Изучение различных методов получения IP-адреса в Delphi Android

В сегодняшней записи блога мы углубимся в мир разработки Delphi для Android и обсудим различные методы получения IP-адреса устройства. Знание IP-адреса может иметь решающее значение для реализации сетевых функций в ваших приложениях Delphi для Android. Итак, давайте углубимся и рассмотрим различные подходы к получению IP-адреса!

Метод 1: использование функции GetLocalIpAddress
Один из самых простых способов получить IP-адрес — использование функции GetLocalIpAddress. Этот метод получает IP-адрес, назначенный сетевому интерфейсу устройства. Вот пример того, как это можно реализовать:

uses
  Androidapi.Helpers,
  Androidapi.JNI.Net,
  Androidapi.JNI.JavaTypes;
function GetIPAddress: string;
var
  WifiManager: JWifiManager;
  WifiInfo: JWifiInfo;
begin
  WifiManager := TJWifiManager.Wrap(
    SharedActivity.getSystemService(TJContext.JavaClass.WIFI_SERVICE));
  WifiInfo := WifiManager.getConnectionInfo;
  Result := JStringToString(WifiInfo.getIpAddress);
end;

Метод 2: использование API Java
Delphi позволяет получить доступ к базовым API Java, что открывает широкий спектр возможностей. Вы можете использовать API Java, связанные с сетью, для получения IP-адреса. Вот пример:

uses
  Androidapi.Helpers,
  Androidapi.JNI.JavaTypes,
  Androidapi.JNI.Net,
  Androidapi.JNI.Wifi;
function GetIPAddress: string;
var
  WifiManager: JWifiManager;
  WifiInfo: JWifiInfo;
  Formatter: JFormatter;
begin
  WifiManager := TJWifiManager.Wrap(
    SharedActivity.getSystemService(TJContext.JavaClass.WIFI_SERVICE));
  WifiInfo := WifiManager.getConnectionInfo;
  Formatter := TJFormatter.JavaClass.init;
  Result := Formatter.format('%d.%d.%d.%d', [
    (WifiInfo.getIpAddress shr 0) and $FF,
    (WifiInfo.getIpAddress shr 8) and $FF,
    (WifiInfo.getIpAddress shr 16) and $FF,
    (WifiInfo.getIpAddress shr 24) and $FF]).toString;
end;

Метод 3: использование сокетных соединений
Другой подход к получению IP-адреса заключается в установлении сокетного соединения с удаленным сервером и извлечении локального IP-адреса из подключенного сокета. Вот пример:

uses
  System.Net.Socket;
function GetIPAddress: string;
var
  Socket: TSocket;
begin
  Socket := TSocket.Create(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  try
    Socket.Connect('8.8.8.8', 53);
    Result := Socket.LocalAddress.ToString;
  finally
    Socket.Free;
  end;
end;

В этой записи блога мы рассмотрели три различных метода получения IP-адреса в Delphi Android. Мы обсудили использование функции GetLocalIpAddress, использование API Java и установление соединений сокетов. Каждый метод имеет свои преимущества, поэтому выберите тот, который лучше всего соответствует требованиям вашего приложения. Включив эти методы в свои проекты Delphi Android, вы сможете создавать надежные сетевые приложения. Приятного кодирования!