怎样用Java验证ip和子网掩码是不是正确,详细问题如下

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用Java验证ip和子网掩码是不是正确,详细问题如下相关的知识,希望对你有一定的参考价值。

比如子网掩码大于32我们知道肯定是错的,还有192.168.0.10/29也是错的,怎么能用Java判断呢

把ip和子网掩码转换成二进制 做“按位与”运算 得出的就是网络id号a 另一个ip也是一样计算方法 得出网络id号b
比较a=b 就说明在一个子网 反之 不在
ip转换成二进制的时候 注意按段转
参考技术A 192.168.0.10/29没错,29位的追问

好像是错的吧,192.168.0.10的子网掩码最小应该是31位吧

追答

31位才是错的,31位的子网就没有可用的IP。

掩码不是到哪位有1就是正确,网络位可能更靠后,也可能在前面。

追问

找机会你再好好学学这块吧,你注意192.168.0.10的10吗

追答

10怎么了
192.168.0.10/29只是该网络的一个可用IP
该网络的网络地址:192.168.0.8
该网络的广播地址:192.168.0.15
该网络的可用IP范围:192.168.0.9-192.168.0.14

你认为第31位二进制是1那么子网掩码就必须要到31位,可惜你连基础都没搞明白,最小的网络掩码也必须30位,31位掩码的网络根本没有可用的IP,建议你先去看看书查查资料搞明白基础。

参考技术B 使用正则表达式追问

亲,你还不如直接说使用算法呢

追答

正则表达式是检测此类东西最方便的方式。使用算法不是更麻烦了?

String checkIp = "\\\\d3[.][0-9]3[.][0-9]3[.][0-9]3$";
 System.out.println("192.168.0.10/29".matches(checkIp));
 试试看。

追问

好像不对呢

追答

String checkIp = "\\d1,3[.][0-9]1,3[.][0-9]1,3[.][0-9]1,3$";

Linux中,怎样永久修改IP和子网掩码

linux中永久修改ip和子网掩码,可以用命令也可以直接到文件里修改。这里推荐直接到文件中修改。
1、进入网卡配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ethN (ifcfg-ethN是你要修改的网卡,可以用ifconfig查看你要修改的网卡)
2、进入文件进行编辑,更改其中的ip 和子网掩码。
3、重启网路服务,并用ifconfig 查看网卡信息。
service network restart
ifconfig
参考技术A 你要有ROOT权限,修改/etc/sysconfig/network-scripts/ifcfg-eth0 (eth0是指这一张网卡,如果你还有第二张网卡,需要修改ifcfg-eth1了)
加入
IPADDR=192.168.1.101 (这儿就是你的IP地址)
NETMASK=255.255.255.0 (这儿是掩码)这样就永久修改了。
参考技术B #vi /etc/sysconfig/network-scripts/ifcfg-eth0格式如下IPADDR=X.X.X.X #你需要设置的ipNETMASK=X.X.X.X #你需要设置的掩码BOOTPROTO=static #手动配置。NOBOOT=yes #开机自动启动。如果你不是最小化安装的话直接netconfig在里面设置。 参考技术C vi /etc/sysconfig/network-scripts/ifcfg-eth0 IPADDR=192.168.1.1 NETMASK=255.255.255.0 保存退出注意前面是大写。然后,service network restart即可永久生效。

以上是关于怎样用Java验证ip和子网掩码是不是正确,详细问题如下的主要内容,如果未能解决你的问题,请参考以下文章

Linux中,怎样永久修改IP和子网掩码

如何判断子网掩码是不是合法

怎样根据IP地址和子网掩码计算出主机号

怎样根据IP地址和子网掩码计算出主机号

ip与子网掩码,啥样的两台计算机能互相通信。

了解网络之子网掩码详解