关于IP的代码

一、由域名求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[i]&0xff);
  }
   System.out.println();
 }
}

程序运行结果:

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[i].getHostAddress());
   }        
      }
      catch (Exception e)
      {
            System.out.println(e.toString());
            System.exit(1);
       }
   }
}


? 运行结果:
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地址的各种表现形式:/r/n");
          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));
     }
}

程序运行结果:

IP地址的各种表现形式:

32位二进制形式:11001010011100000110000010100011
十进制形式:3396362403
普通形式:202.112.96.163.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值