NetworkInterface获取主机ip,判断内外网

 

 一.NetworkInterface概念

Java提供了一个NetworkInterface类。这个类可以得到本机所有的物理网络接口和虚拟机等软件利用本机的物理网络接口创建的逻辑网络接口的信息。
        第一步:NetworkInterface通过getNetworkInterfaces方法来枚举本机所有的网络接口。

第二步:遍历所有网络ip,获取本机ip



 二.java实现

private static String getLocalIp() {
        String sip = null;
        InetAddress ip = null;
        boolean bFindIP = false;
        Enumeration<NetworkInterface> netInterfaces = null;
        try {
            netInterfaces = (Enumeration<NetworkInterface>) NetworkInterface.getNetworkInterfaces();
        } catch (SocketException e) {
            e.printStackTrace();
        }
        while (netInterfaces.hasMoreElements()) {
            if (bFindIP) {
                break;
            }
            NetworkInterface ni = (NetworkInterface) netInterfaces.nextElement();
            // ----------特定情况,可以考虑用ni.getName判断
            // 遍历所有ip
            Enumeration<InetAddress> ips = ni.getInetAddresses();
            while (ips.hasMoreElements()) {
                ip = (InetAddress) ips.nextElement();
                if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() // 127.开头的都是lookback地址
                        && ip.getHostAddress().indexOf(":") == -1) {
                    bFindIP = true;
                    break;
                }
            }
        }
        if (ip != null) {
            sip = ip.getHostAddress();
        }
        return sip;

    }

三. js区分内外网   

function getIpNum(ipAddress){
         var ip = new Array(); 
         ip= ipAddress.split(".");
         var a = parseInt(ip[0]);
         var b = parseInt(ip[1]);
         var c = parseInt(ip[2]);
         var d = parseInt(ip[3]);
    return a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
}
//是否为内网
function isInnerIP(ip){
     var a1 = getIpNum("10.0.0.0");
     var a2 = getIpNum("10.255.255.255");
     var b1 = getIpNum("172.16.0.0");
     var b2 = getIpNum("172.31.255.255");
     var c1 = getIpNum("192.168.0.0");
     var c2 = getIpNum("192.168.255.255");
     var d1 = getIpNum("10.44.0.0");
     var d2 = getIpNum("10.69.0.255");
     var n = getIpNum(ip);
     return (n >= a1 && n <= a2) || (n >= b1 && n <= b2) || (n >= c1 && n <= c2) || (n >= d1 && n <= d2);
}
/******
 * 截取URL请求参数
 *
 * @param paras
 * @returns
 */
function getRequestURL(paras) {
    var url = location.href;
    var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
    var paraObj = {}
    for (i = 0; j = paraString[i]; i++) {
        paraObj[j.substring(0, j.indexOf("=")).toLowerCase()] = j.substring(j
                .indexOf("=") + 1, j.length);
    }
    var returnValue = paraObj[paras.toLowerCase()];
    if (typeof (returnValue) == "undefined") {
        return "";
    } else {
        return returnValue;
    }
}

  

时间: 2024-08-08 15:19:28

NetworkInterface获取主机ip,判断内外网的相关文章

获取本机的内外网ip

package tool; import java.net.InetAddress;import java.net.UnknownHostException; /** * @description * @author: 123.com * @create: 2019-01-17 17:34:52 **/ public class GetIp { public static void getip() { try { InetAddress address = InetAddress.getLoca

获取主机ip地址

Linux或windows的ip地址 import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; import java.util.Enumeration; /** * * @author LiCJ * @date 2017.04.12 */ public class WebTools {

获取客户端IP 和 外网IP

using System;using System.Collections.Generic;using System.Linq;using System.Text.RegularExpressions;using System.Web; namespace Common{ public class CheckIP { #region 判断是否是IP格式 public static bool IsIPAddress(string strIP) { if (string.IsNullOrEmpty(

JS绕过代理、VPN获取真实IP及内网IP,逆向追踪

//get the IP addresses associated with an accountfunction getIPs(callback){     var ip_dups = {};     //compatibility for firefox and chrome     var RTCPeerConnection = window.RTCPeerConnection         || window.mozRTCPeerConnection        || window.

判断内外网环境

#include "stdafx.h" #include "windows.h" #include <Sensapi.h> #include <iostream> #include <Wininet.h> #pragma comment(lib, "Sensapi.lib") #pragma comment(lib, "Wininet.lib") using namespace std; i

Java获取网络IP

Java获取获取网络IP,浅尝辄止咯- 1 import java.net.InetAddress; 2 import java.net.UnknownHostException; 3 4 /** 5 * 获取网络IP 6 * 1.获取本地的IP地址 7 * 2.获取本机的服务器名称 8 * 3.获取远程服务器的主机IP地址 9 * 4.获取远程服务器的所有主机IP 10 * 11 * 网络编程: 12 * InetAddress 是用来封装IP地址相关信息的类 13 * getLocalHos

[源码]K8 Cscan插件 C#获取内网主机IP/机器名/Banner/网页标题

[源码]K8 Cscan模块 C#扫描内网主机IP/机器名/Banner/网页标题源码 Cscan内置Delphi.VC..NET例子,需要更多功能,请自行添加完善 using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Text.RegularExpressions; namespace CscanDLL { public class scan { pub

如何判断自己IP是内网IP还是外网IP

tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8:10.0.0.0-10.255.255.255  172.16.0.0/12:172.16.0.0-172.31.255.255  192.168.0.0/16:192.168.0.0-192.168.255.255 使用保留地址的网络只能在内部进行通信,而不能与其他网络互连.如果要与外部通信,那么必须通过网关与外部通信,这里使用了NAT, NAPT技术就是用来保证通信的代理机制. 另外,一些宽带

如何快速判断IP是内网还是外网(转)

TCP/IP协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8:10.0.0.0-10.255.255.255 172.16.0.0/12:172.16.0.0-172.31.255.255 192.168.0.0/16:192.168.0.0-192.168.255.255 使用保留地址的网络只能在内部进行通信,而不能与其他网络互连.如果要与外部通信,那么必须通过网关与外部通信,这里使用了NAT, NAPT技术就是用来保证通信的代理机制. 提示:上述IP地址