bcbcdd1 发表于 2022-10-16 16:55:34

求获取本机内网IP的方法

求获取本机内网IP的方法

bcbcdd1 发表于 2022-10-16 17:05:04

//获取本机内网IP

function getIPnw() {

    importClass('java.net.Inet4Address');
    importClass('java.net.InetAddress');
    importClass('java.net.NetworkInterface');
    importClass('java.util.Enumeration');
    importClass('java.net.Inet6Address');
    //获取内网IP地址
    var hostIp = null;
    try {
      var nis = NetworkInterface.getNetworkInterfaces();
      var ia = null;
      while (nis.hasMoreElements()) {
            var ni = nis.nextElement();
            var ias = ni.getInetAddresses();
            while (ias.hasMoreElements()) {
                var ia = ias.nextElement();
                if (ia instanceof Inet6Address) {
                  continue;
                }
                var ip = ia.getHostAddress();
                if (!"127.0.0.1".equals(ip)) {
                  hostIp = ia.getHostAddress();
                  break;
                }
            }
      }
    } catch (e) {
      log("e");
    }
    return hostIp
};

这个是以前AJ 写的 在IDEA上一直编译不通过   

执行错误:Function importClass must be called with a class; had "java.net.Inet4Address" instead.(js/main.js#44 )   是不是引用类写法不对 求指教

Mr_老冷 发表于 2022-10-16 22:02:58

引用方法没问题,应该是EC没找到这个类

m3325599 发表于 2022-10-17 14:27:04

试试JavaScript,百度搜下 我试过,有时候可用.不行就还用java,java可以 我试过.

Mr_老鬼 发表于 2022-10-18 05:11:26

   public static String getIntranetIPAddress(Context context) {
      NetworkInfo info = ((ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
      if (info != null && info.isConnected()) {
            if (info.getType() == ConnectivityManager.TYPE_MOBILE) {//当前使用2G/3G/4G网络
                try {
                  for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
                        NetworkInterface intf = en.nextElement();
                        for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
                            InetAddress inetAddress = enumIpAddr.nextElement();
                            if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
                              return inetAddress.getHostAddress();
                            }
                        }
                  }
                } catch (SocketException e) {
                  e.printStackTrace();
                }

            } else if (info.getType() == ConnectivityManager.TYPE_WIFI) {//当前使用无线网络
                WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
                WifiInfo wifiInfo = wifiManager.getConnectionInfo();
                String ipAddress = intIP2StringIP(wifiInfo.getIpAddress());//得到IPV4地址
                return ipAddress;
            }
      } else {
            //当前无网络连接,请在设置中打开网络
      }
      return null;
    }
    /**
   * 将得到的int类型的IP转换为String类型
   *
   * @param ip
   * @return
   */
    public static String intIP2StringIP(int ip) {
      return (ip & 0xFF) + "." +
                ((ip >> 8) & 0xFF) + "." +
                ((ip >> 16) & 0xFF) + "." +
                (ip >> 24 & 0xFF);
    }

Java 插件方式

bcbcdd1 发表于 2022-10-18 09:25:56

m3325599 发表于 2022-10-17 14:27
试试JavaScript,百度搜下 我试过,有时候可用.不行就还用java,java可以 我试过.

按理来说我那代码应该可以用的用shll命令也能获取

m3325599 发表于 2022-10-25 07:08:56

5楼是标准答案我之前用的也是 这个方案
页: [1]
查看完整版本: 求获取本机内网IP的方法