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入门到精通教程
查看: 356|回复: 0

[Java基础知识]IP地址转换成10进制整数

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

    [LV.1]初来乍到

    发表于 2014-10-1 10:57:58 | 显示全部楼层 |阅读模式
    一、由域名求IP地址的程序
    下面程序由命令行输入域名,输出ip
        import java.net.*;
    public class nslookup {
    //Usage:java nslookup hostname
    public static void main (String argv[]) throws Exception {
      String host=argv[0];
      InetAddress address=null;
      try {
         address=InetAddress.getByName(host);
      } catch(UnknownHostException e) {
         System.out.println("Unknown host");
         System.exit(0);
      }
      byte[] ip=address.getAddress();
      for (int i=0;i< ip.length;i++) {
          if (i>0) System.out.print(".");
          System.out.print(ip&0xff);
      }
       System.out.println();
    }
    }
    [/code]
        程序运行结果:
        C:java>java nslookup sina.com
    71.5.7.138
        C:java>
        二、 得到某个域名的所有IP地址
        import java.net.*;
    import java.io.*;
    public class SimpleDNS
    {
       public static void main(String[] args)
       {
          try
          {
             InetAddress[] address =InetAddress.getAllByName("www.sina.com");
       for(int i=0;i< address.length;i++)
       {   
       System.out.println(address.getHostAddress());
       }         
          }
          catch (Exception e)
          {
                System.out.println(e.toString());
                System.exit(1);
           }
       }
    }
    [/code]?
        运行结果:
    C:java>java SimpleDNS www.s
    218.30.13.35
    218.30.13.36
    218.30.13.37
    218.30.13.38
    218.30.13.39
    218.30.13.40
    218.30.13.41
    218.30.13.42
    218.30.13.43
    218.30.13.44
    218.30.13.45
    218.30.13.46
    218.30.13.47
    218.30.13.48
    218.30.13.49
    218.30.13.34   
        三、 IP地址转换成10进制整数
    经常要判断一个ip是国内的还是国外的,有了下面程序再结合数据库查询...
         /**
    @描述:java中实现IP地址的各种表现形式之间的转换
    @作者:慈勤强
    @Email : cqq1978@gmail.com http://blog.csdn.net/cqq
    */  
       
        class IP
    {
         private static long ipToLong(String strIP)
         //将127.0.0.1 形式的IP地址转换成10进制整数,这里没有进行任何错误处理
         {
              int j=0;
              int i=0;
              long [] ip=new long[4];
              int position1=strIP.indexOf(".");
              int position2=strIP.indexOf(".",position1+1);
              int position3=strIP.indexOf(".",position2+1);  
              ip[0]=Long.parseLong(strIP.substring(0,position1));
              ip[1]=Long.parseLong(strIP.substring(position1+1,position2));
              ip[2]=Long.parseLong(strIP.substring(position2+1,position3));
              ip[3]=Long.parseLong(strIP.substring(position3+1));
              return (ip[0]<<24)+(ip[1]<<16)+(ip[2]<<8)+ip[3];
         }
         private static String longToIP(long longIP)
         //将10进制整数形式转换成127.0.0.1形式的IP地址
         {
              StringBuffer sb=new StringBuffer("");
              sb.append(String.valueOf(longIP>>>24));//直接右移24位
              sb.append(".");

              //将高8位置0,然后右移16位
              sb.append(String.valueOf((longIP&0x00FFFFFF)>>>16));
              sb.append(".");
              sb.append(String.valueOf((longIP&0x0000FFFF)>>>8));
              sb.append(".");
              sb.append(String.valueOf(longIP&0x000000FF));
              sb.append(".");
              return sb.toString();
         }
         public static void main(String[] args)
         {
              System.out.println("IP地址的各种表现形式:
    ");
              System.out.print("32位二进制形式:");
              System.out.println(Long.toBinaryString(3526601384L));
              System.out.print("十进制形式:");
              System.out.println(ipToLong("210.51.170.168"));
              System.out.print("普通形式:");
              System.out.println(longToIP(3526601384L));
         }
    }
    [/code]
        程序运行结果:
        IP地址的各种表现形式:  
        32位二进制形式:11001010011100000110000010100011
    十进制形式:3396362403
    普通形式:202.112.96.163.  
       
       
       
      
       
       
         
       

         
       
      
      
      
       
      
       
      

      










    源码下载:http://file.javaxxz.com/2014/10/1/105758031.zip
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-3 22:38 , Processed in 0.435236 second(s), 48 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

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