IP地址转换成10进制整数

一、由域名求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();
}
}

程序运行结果:

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);
    }
  }
}


? 运行结果:
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、付费专栏及课程。

余额充值