精华内容
下载资源
问答
  • 函数与提取: public static boolean isSameAddress...判断是否属于同一网段,默认子网掩码 public static boolean isSameAddress(String resourceIp, String requestIp, String subnetMask);判断是否属于同一

    函数与提取:
    public static boolean isSameAddress(String resourceIp, String requestIp);判断是否属于同一网段,默认子网掩码
    public static boolean isSameAddress(String resourceIp, String requestIp, String subnetMask);判断是否属于同一网段,指定子网掩码
    public static String getIpType(String ip);判断IP地址类型A、B、C类

    package com.laiwei.stream.util;
    
    import com.laiwei.framework.exception.RuleIllegalArgumentException;
    import org.junit.Test;
    
    public class IpV4Util {
    
    	public static final String DEFAULT_SUBNET_MASK_A = "255.0.0.0";
    	public static final String DEFAULT_SUBNET_MASK_B = "255.255.0.0";
    	public static final String DEFAULT_SUBNET_MASK_C = "255.255.255.0";
    	public static final String TYPE_IP_A = "A";
    	public static final String TYPE_IP_B = "B";
    	public static final String TYPE_IP_C = "C";
    	public static final String TYPE_IP_D = "D";
    	public static final String TYPE_IP_LOCATE = "locate";
    	//	@Test
    	//	public void test() {
    	//		System.out.println(isSameAddress("192.168.1.1", "192.168.1.5", DEFAULT_SUBNET_MASK_C));
    	//
    	//	}
    		@Test
    		public void test() {
    			String ip_a="127.0.01.15";
    			String ip_c="192.168.1.1";
    			String binaryIp = getBinaryIp("192.168.1.1");
    			System.out.println(getIpType(ip_a));
    
    		}
    		//判断ip是否属于同一网段,默认子网掩码
    	public static boolean isSameAddress(String resourceIp, String requestIp) {
    		if (getIpType(resourceIp).equals(getIpType(requestIp))){
    			return isSameAddress(resourceIp,requestIp,getIpDefaultMask(getIpType(resourceIp)));
    		}
    		return false;
    	}
    	//通过ip类型,获取默认IP子网掩码
    	private static String getIpDefaultMask(String ipType){
    			switch (ipType){
    				case TYPE_IP_A:return DEFAULT_SUBNET_MASK_A;
    				case TYPE_IP_B:return DEFAULT_SUBNET_MASK_B;
    				case TYPE_IP_C:return DEFAULT_SUBNET_MASK_C;
    				default:throw new RuleIllegalArgumentException("没有对应的mask地址");
    			}
    	}
    		//判断ip是否属于同一网段
    	public static boolean isSameAddress(String resourceIp, String requestIp, String subnetMask) {
    		String resourceAddr = getAddrIp(resourceIp, subnetMask);
    		String subnetMaskAddr = getAddrIp(requestIp, subnetMask);
    		if (resourceAddr.equals(subnetMaskAddr)) {
    			return true;
    		}
    		return false;
    	}
    	//获取ip的二进制字符串
    	private static String getBinaryIp(String data) {
    		String[] datas = data.split("\\.");
    		String binaryIp = "";
    		for (String ipStr : datas) {
    			long signIp = Long.parseLong(ipStr);
    			String binary = Long.toBinaryString(signIp);
    			long binaryInt = Long.parseLong(binary);
    			binaryIp += String.format("%08d", binaryInt);
    		}
    		return binaryIp;
    	}
    	//获取ip的地址位
    	private static String getAddrIp(String ip, String subnetMask) {
    		StringBuilder addrIp = new StringBuilder();
    		String binaryIp = getBinaryIp(ip);
    		String binarySubnetMask = getBinaryIp(subnetMask);
    		for (int i = 0; i < 32; i++) {
    			byte ipByte = Byte.parseByte(String.valueOf(binaryIp.charAt(i)));
    			byte subnetMaskByte = Byte.parseByte(String.valueOf(binarySubnetMask.charAt(i)));
    			addrIp.append(ipByte & subnetMaskByte);
    		}
    		return addrIp.toString();
    	}
    		//获取ip是什么类型,ABCD
    	public static String getIpType(String ip) {
    		String binaryIp = getBinaryIp(ip);
    		System.out.println(binaryIp);
    		if (ip.startsWith("127")){
    			return TYPE_IP_LOCATE;
    		}
    		if (binaryIp.startsWith("0")){
    			return TYPE_IP_A;
    		}
    		if (binaryIp.startsWith("10")){
    			return TYPE_IP_B;
    		}
    		if (binaryIp.startsWith("110")){
    			return TYPE_IP_C;
    		}
    		if (binaryIp.startsWith("1110")){
    			return TYPE_IP_D;
    		}
    		throw new RuleIllegalArgumentException("无效ip异常");
    	}
    }
    
    
    展开全文
  • 让ip地址和子网掩码进行与操作,如果最后得到的结果相同代表是同一局域网 如: let ip1 = '172.18.2.200'; let zw1 = '255.255.255.0'; ---> 172&255 , 18&255 , 2&255 , 200&0, let ip2 = '172...

    一、原理

    让ip地址和子网掩码进行与操作,如果最后得到的结果相同代表是同一局域网
    如:
    let ip1 = '172.18.2.200';  
    let zw1 = '255.255.255.0';
    ---> 172&255 , 18&255 , 2&255 , 200&0,
    let ip2 = '172.18.3.139';
    let zw2 = '255.255.255.0'
    --->172&255 , 18&255 , 3&255 , 139&0 ,
    两个结果相同则为同一局域网
    

    二、代码实现

    let ip1 = '172.18.2.200';  //-->[172,18,2,200]
    let zw1 = '255.255.255.0'
    let ip2 = '172.18.3.139';
    let zw2 = '255.255.255.0'
    
    //先转化为数组
    const toArr =(data)=>{
        let arr = data.split('.')
        return arr.map((item)=>(Number(item)))
    }
    //按位与操作
    const and = (addres,addres2)=>{
        if(addres.length !==addres2.length){
               return false 
        }
        let arr =[];
        const len = addres.length;
        for (let i = 0; i <len ; i++) {
             arr.push(addres[i] & addres2[i])
        }
        return  arr.join(".")
    }
    //第一组数据
    const arr1 =toArr(ip1)
    const arr2 =toArr(zw1)
    const resIp1 =and(arr1,arr2)
    
    //第二组数据
    const arr3 =toArr(ip2)
    const arr4 =toArr(zw2)
    const resIp2 =and(arr3,arr4)
    console.log(resIp1 ==resIp2)
    
    展开全文
  • 判断ip地址是否在同一网段

    万次阅读 多人点赞 2019-05-26 20:11:23
    怎么判断IP地址的是否在同一网段。 相信好多人都认为IP只要前三段相同,就是在同一网段了,其实,不是这样的,同样,我想把IP的每一段转换为一个二进制数,这里就拿IP:192.168.0.1,子网掩码:255.255.255...

    怎么判断IP地址的是否在同一网段。

    相信好多人都认为IP只要前三段相同,就是在同一网段了,其实,不是这样的,同样,我想把IP的每一段转换为一个二进制数,这里就拿IP:192.168.0.1,子网掩码:255.255.255.0做实验吧。

    192.168.0.1

    11000000.10101000.00000000.00000001

    (这里说明一下,和子网掩码一样,每段8位,不足8位的,前面加0补齐。)

    IP    11000000.10101000.00000000.00000001

    子网掩码  11111111.11111111.11111111.00000000

    在这里,向大家说一下到底怎么样才算同一网段。

    要想在同一网段,必需做到网络标识相同,那网络标识怎么算呢?

    各类IP的网络标识算法都是不一样的。A类的,只算第一段。B类,只算第一、二段。C类,算第一、二、三段。

    算法只要把IP和子网掩码的每位数AND就可以了。

    AND方法:0和1=0 0和0=0 1和1=1

    如:And 192.168.0.1,255.255.255.0,先转换为二进制,然后AND每一位

    IP      11000000.10101000.00000000.00000001

    子网掩码    11111111.11111111.11111111.00000000

    得出AND结果  11000000.10101000.00000000.00000000

    转换为十进制192.168.0.0,这就是网络标识,

    再将子网掩码反取,也就是00000000.00000000.00000000.11111111,与IP:192.168.0.1 AND

    得出结果00000000.00000000.00000000.00000001,转换为10进制,即0.0.0.1,

    这0.0.0.1就是主机标识。

     

    要想在同一网段,必需做到网络标识一样。

     

      我们再来看看这个改为默认子网掩码的B类IP

    如IP:188.188.0.111,188.188.5.222,子网掩码都设为255.255.254.0,在同一网段吗?

    先将这些转换成二进制

    188.188.0.111 10111100.10111100.00000000.01101111

    188.188.5.222 10111100.10111100.00000101.11011010

    255.255.254.0 11111111.11111111.11111110.00000000

    分别AND,得

    10111100.10111100.00000000.00000000

    10111100.10111100.00000100.00000000

    网络标识不一样,即不在同一网段。

     

     

     

    这里所说的网络标识也就是子网

    展开全文
  • 这两个IP到底是不是在同一子网内?但我用远程连接目的主机(如上述的源主机去远程连接目的主机)时还是可以连上的,我想是因为在不同网段,而通过默认网关发送分组而连接上的?...
  • 判断是不是在同一网段,你会了吧,下面,我们来点实际的。 一个公司有530台电脑,组成一个对等局域网,子网掩码和IP设多少最合适? 子网掩码不说了,前面算出结果来了11111111.11111111.11111100.00000000,也就是...

    算法只要把IP和子网掩码的每位数AND就可以了。
    AND方法:0和1=0 0和0=0 1和1=1
    如:And 192.168.0.1,255.255.255.0,先转换为二进制,然后AND每一位
    IP 11000000.10101000.00000000.00000001
    子网掩码 11111111.11111111.11111111.00000000
    得出AND结果  11000000.10101000.00000000.00000000
    转换为十进制192.168.0.0,这就是网络标识,
    再将子网掩码反取,也就是00000000.00000000.00000000.11111111,与IP AND
    得出结果00000000.00000000.00000000.00000001,转换为10进制,即0.0.0.1,
    这0.0.0.1就是主机标识。要想在同一网段,必需做到网络标识一样。
    我们再来看看这个改为默认子网掩码的B类IP
    如IP:188.188.0.111,188.188.5.222,子网掩码都设为255.255.254.0,在同一网段吗?
    先将这些转换成二进制
    188.188.0.111 10111100.10111100.00000000.01101111
    188.188.5.222 10111100.10111100.00000101.11011110
    255.255.254.0 11111111.11111111.11111110.00000000
    分别AND,得
    10111100.10111100.00000000.00000000
    10111100.10111100.00000100.00000000
    网络标识不一样,即不在同一网段。
    判断是不是在同一网段,你会了吧,下面,我们来点实际的。
    一个公司有530台电脑,组成一个对等局域网,子网掩码和IP设多少最合适?
    子网掩码不说了,前面算出结果来了11111111.11111111.11111100.00000000,也就是255.255.252.0
    我们现在要确定的是IP如何分配,首先,选一个B类IP段,这里就选188.188.x.x吧
    这样,IP的前两段确定的,关键是要确定第三段,只要网络标识相同就可以了。我们先来确定网络号。(我们把子网掩码中的1和IP中的 对就起来,0和*对应起来,如下:)
    255.255.252.0 11111111.11111111.11111100.00000000
    188.188.x.x 10111100.10111100. .******
    网络标识 10111100.10111100. 00.00000000
    由此可知, *处随便填(只能用0和1填,不一定全是0和1)

    展开全文
  • 子网掩码是一个32位地址,子网掩码的作用是用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是局域网上,还是远程网上。一般的IP地址设置如下 而怎么求网络标识和主机标识呢?网络标识的求法...
  • 用c#实现的判断两个ip地址是否属于同一网段,用于网络传输判断
  • 例子: board IP  192.168.1.230 110010010 101101000 00000001 1000110000 mask 255.255.255.0 11111111 11111111 11111111 00000000 ...如果boardInterflag = ubuntuInterflag 则在同一网段。  
  • 如何判断计算机是否在同一网段?

    千次阅读 2012-02-15 10:42:43
    如何判断计算机是否在同一网段? 如果两台计算机对应的子网地址相同,则这两台计算机 同一网段,否则不在同一网段。 子网地址=计算机IP地址 AND 子网掩码  [例]  A: 192.168.3.1 AND 255.255.255.0 = 192....
  • 如何判断两个地址是否在同一网段

    千次阅读 2020-07-21 11:16:56
    讲之前,先让大家判断一,有如下IP地址 A:192.168.1.1/24 B:192.168.1.2/24 C:192.168.1.2/25 D:192.168.2.1/24 显然A地址和B在同一网段,A和D不在同一网段,
  • 如何判断两台电脑是不是在同一网段内。
  • 如何判断两个IP是否在同一网段

    千次阅读 2017-02-28 23:20:50
    大学的时候有上过计算机网络的课程,IP这块也有一些接触,但向来不是很好学的我,对于...接下来我们举例说明,如何去判断A和B两个IP是否在同一网段。 A IP:202.194.128.9 B IP:202.194.128.14 子网掩码:255.
  • 判断任意两台计算机的IP地址是否属于同一网络#include "OJ.h"#include#includeusing namespace std;/*功能: 判断两台计算机IP地址是同一网络。原型:int IsSameSubNetwork(char * pcIp1, char * pcIp2, char * ...
  • 内容索引:C#源码,网络相关,IP C#小程序,实现判断计算两个IP地址是否同一个子网(掩码)内,程序是用VS2005下开发的,编译正常通过,不过有时候运行不太稳定,会抛出一个“异常”错误,有兴趣研究的朋友可以...
  • 判断两个IP是否在同一网段

    万次阅读 2017-10-18 19:55:54
    相信不只我一个人有过这样的想法:只要IP的前三段相同,就是在同一网段了。真相不是这样的。 IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。IP地址3种主要类型里,各保留了3...
  • 1. IP&MASK 查看两台设备的ip4地址和...MASK,若二者相同,则在同一局域网内,否则不在同一局域网。 192.168.0.101 & 255.255.255.0 = 192.168.0.0 192.168.0.105 & 255.255.255.0 = 192.168.0.0 二者...
  • 一个C#编写的计算两个ip是否在同一个子网内的程序源代码,编译时请注意,不同的编译器中可能会出现不同的错误.。源码编译后的截图如上示,用两种计算方法判断IP是否在同一子网。
  • /// 获取同一子网下另一个ip地址,从子网第一个ip开始算起第n个ip /// public static string GetNewIPAddressByIPAddress(string ipAddress, string subnetMask, int n = 10) { int count = ...
  • 子网掩码是用来判断任意两台计算机的IP地址是否属于同一网络的根据。 子网掩码与IP地址结构相同,是32位二进制数,其中网络号部分全为“1”和主机号部分全为“0”。利用子网掩码可以判断两台主机是否同一子网中...
  • 怎样判断两个IP是否在同一局域网?

    千次阅读 2017-09-20 18:49:31
    怎样判断两个IP是否在同一局域网?1.windows中,开始->cmd 进入Dos,输入ipconfig /all,查看网络配置。2.首先看子网掩码(Subnet Mask),如果两台机器子网掩码不一致,不一个局域网。3.若子网掩码一致,再看...
  • 主机只知道自己的掩码...从而判断目的ip是否和自己处于同一网段。 同一网段,就直接封装,然后发包。 不同网段,就要查询是否配置网关, 如果配置了网关,就封装网关mac,发包, 如果没有网关,那么就目的不可达。 ...
  • 在同一网络上报文转发流程

    千次阅读 2018-06-05 20:39:30
    网络基本功(四):细说路由(上)转载请文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese 介绍以太网交换机工作第二层即数据链路层,用于在同一网络内部转发以太网帧。但是,当源和...
  • 最简单的办法就是关掉所有防火墙以后,ping对方计算机的计算机名,能ping通就在同一内网。 参考: http://ask.zol.com.cn/x/5461873.html https://blog.csdn.net/lin_transform/article/details/78222721...
  • 子网掩码是用来判断任意两台计算机的IP地址是否属于同一网络的根据。 最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 174,149
精华内容 69,659
关键字:

判断是否在同一网络