В сегодняшней записи блога мы углубимся в мир разработки 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, вы сможете создавать надежные сетевые приложения. Приятного кодирования!