Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 406|回复: 0

[网络编程学习]Java获取子网掩码

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-7 00:04:40 | 显示全部楼层 |阅读模式
    昨天写代码写到一半,突然想到,之前测试的时候都是手动输入子网掩码的,因而想着如何自动获得子网掩码,于是就Google了下,发现确实是有这方面的东西,可能我是自己比较笨,看不懂别人的代码,也因为找到的代码很少注释(这可能是中国人写程序的习惯),所以我就不想再看了,但是多少还是有点启发的,查看了jdk以后,知道可以通过NetworkInterface、InterfaceAddress这两个类来实现,可以获得子网掩码前缀,然后通过运算就能得到子网掩码,要说明的是,我计算掩码的方法很土但是很好用,代码也很容易看的懂,还有一个要说明的是,我是xp系统,没有安装ipv6协议. 代码:  

    public class SubnetMask {
           
            /**
             * @param args
             */
            public static String getSubnetMask(){
                    int prefix=0;
                    int[] ipSplit=new int[4];
                    String subnetMask=null;
                    InetAddress localMachine=null;
                    try {
                            localMachine=InetAddress.getLocalHost();
                    } catch (UnknownHostException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                    }
                    NetworkInterface netCard=null;
                    try {
                            netCard=NetworkInterface.getByInetAddress(localMachine);
                    } catch (SocketException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                    }
                     List<InterfaceAddress> localInterface=null;
                     localInterface=netCard.getInterfaceAddresses();
                     Iterator<InterfaceAddress> iterator=null;
                     iterator=localInterface.iterator();
                     while(iterator.hasNext()){
                             InterfaceAddress temp=null;
                             temp=iterator.next();
                             prefix=temp.getNetworkPrefixLength();
                     }
                     int index=0;
                     int split=0;
                     int remainder=0;
                     split=prefix/8;
                     remainder=prefix%8;
                     while(index<split){
                             ipSplit[index]=255;
                             index++;
                     }
                     if(remainder==1)
                             ipSplit[index]=128;
                     if(remainder==2)
                             ipSplit[index]=192;
                     if(remainder==3)
                             ipSplit[index]=224;
                     if(remainder==4)
                             ipSplit[index]=240;
                     if(remainder==5)
                             ipSplit[index]=248;
                     if(remainder==6)
                             ipSplit[index]=252;
                     if(remainder==7)
                             ipSplit[index]=254;
                     index++;
                     while(index<remainder){
                             ipSplit[index]=0;
                             index++;
                     }
                     subnetMask=String.valueOf(ipSplit[0])+"."+String.valueOf(ipSplit[1])+"."+String.valueOf(ipSplit[2])+"."+String.valueOf(ipSplit[3]);
                     return subnetMask;
            }
            public static void main(String[] args) {
                    // TODO Auto-generated method stub
                    String subnetMask=getSubnetMask();
                     System.out.println(subnetMask);
            }
    }  
      
       
       
         
         

          
         

          
         
       
      
    复制代码


    源码下载:http://file.javaxxz.com/2014/11/7/000440656.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 10:22 , Processed in 0.302860 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表