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;
  • 相关阅读:
    15 手写数字识别-小数据集
    14 深度学习-卷积
    13-垃圾邮件分类2
    12.朴素贝叶斯-垃圾邮件分类
    11.分类与监督学习,朴素贝叶斯分类算法
    9、主成分分析
    8、特征选择
    大数据应用技术课程实践--选题与实践方案
    手写数字识别-小数据集
    深度学习-卷积
  • 原文地址:https://www.cnblogs.com/JebediahKerman/p/Two_Ways_in_Delphi_to_Get_IP_Address_on_Android.html
Copyright © 2011-2022 走看看