zoukankan      html  css  js  c++  java
  • Two Ways in Delphi to Get IP Address on Android

    1. Via NDK

    Refer Delphi Call getifaddrs and freeifaddrs on Android

    uses Posix.Ifaddrs, Posix.SysSocket, Posix.ArpaInet, Posix.NetinetIn;
    
    var
      FPifaddrs: Pifaddrs;
      FPin_addr: Pointer;
      Fsa_family: sa_family_t;
      FPtrWrapper: TPtrWrapper;
    begin
      getifaddrs(FPifaddrs);
      FPtrWrapper := TMarshal.AllocMem(INET6_ADDRSTRLEN);
      while FPifaddrs <> Nil do
      begin
        Fsa_family := FPifaddrs.ifa_addr.sa_family;
        if (Fsa_family = AF_INET) or (Fsa_family = AF_INET6) then
        begin
          if Fsa_family = AF_INET then
            FPin_addr := @Psockaddr_in(FPifaddrs.ifa_addr).sin_addr
          else
            FPin_addr := @Psockaddr_in6(FPifaddrs.ifa_addr).sin6_addr;
          inet_ntop(Fsa_family, FPin_addr, FPtrWrapper.ToPointer, INET6_ADDRSTRLEN);
          Writeln(TMarshal.ReadStringAsAnsi(FPtrWrapper));
        end;
        FPifaddrs := FPifaddrs.ifa_next;
      end;
      TMarshal.FreeMem(FPtrWrapper);
    end;

    2. Via JNI

    uses Androidapi.JNI.Net, Androidapi.JNI.Java.Net, Androidapi.JNI.JavaTypes,
      Androidapi.Helpers;
    
    var
      FJEnumOfNet: JEnumeration;
      FJNet: JNetworkInterface;
      FJEnumOfAddr: JEnumeration;
      FJAddr: JInetAddress;
    begin
      FJEnumOfNet := TJNetworkInterface.JavaClass.getNetworkInterfaces;
      while FJEnumOfNet.hasMoreElements do
      begin
        FJNet := TJNetworkInterface.Wrap(FJEnumOfNet.nextElement);
        FJEnumOfAddr := FJNet.getInetAddresses;
        while FJEnumOfAddr.hasMoreElements do
        begin
          FJAddr := TJInetAddress.Wrap(FJEnumOfAddr.nextElement);
          Writeln(JStringToString(FJAddr.getHostAddress.toString));
        end;
      end;
    end;
  • 相关阅读:
    灰度发布
    rabbitmq应用场景
    redis设置cpu核数与内存
    使用word2010发布博客到博客园
    讲师
    UML-6.3-用例-详述示例
    UML-6.2-用例-用例模型/用例/场景关系
    UML-6.1-用例-示例
    数据库增量同步开源软件
    UML-5-进化式需求
  • 原文地址:https://www.cnblogs.com/JebediahKerman/p/Two_Ways_in_Delphi_to_Get_IP_Address_on_Android.html
Copyright © 2011-2022 走看看