A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乔兵 高级黑马   /  2013-10-9 06:56  /  1518 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、由域名求IP地址的程序
下面程序由命令行输入域名,输出ip
  1. import java.net.*;
  2. public class nslookup {
  3. //Usage:java nslookup hostname
  4. public static void main (String argv[]) throws Exception {
  5. String host=argv[0];
  6. InetAddress address=null;
  7. try {
  8. address=InetAddress.getByName(host);
  9. } catch(UnknownHostException e) {
  10. System.out.println("Unknown host");
  11. System.exit(0);
  12. }
  13. byte[] ip=address.getAddress();
  14. for (int i=0;i< ip.length;i++) {
  15. if (i>0) System.out.print(".");
  16. System.out.print(ip[i]&0xff);
  17. }
  18. System.out.println();
  19. }
  20. }
复制代码
程序运行结果:
  1. C:\java>java nslookup sina.com
  2. 71.5.7.138

  3. C:\java>
复制代码
二、 得到某个域名的所有IP地址
  1. import java.net.*;
  2. import java.io.*;
  3. public class SimpleDNS
  4. {
  5. public static void main(String[] args)
  6. {
  7. try
  8. {
  9. InetAddress[] address =InetAddress.getAllByName("www.sina.com");
  10. for(int i=0;i< address.length;i++)
  11. {
  12. System.out.println(address[i].getHostAddress());
  13. }
  14. }
  15. catch (Exception e)
  16. {
  17. System.out.println(e.toString());
  18. System.exit(1);
  19. }
  20. }
  21. }
复制代码
运行结果
  1. C:\java>java SimpleDNS www.s
  2. 218.30.13.35
  3. 218.30.13.36
  4. 218.30.13.37
  5. 218.30.13.38
  6. 218.30.13.39
  7. 218.30.13.40
  8. 218.30.13.41
  9. 218.30.13.42
  10. 218.30.13.43
  11. 218.30.13.44
  12. 218.30.13.45
  13. 218.30.13.46
  14. 218.30.13.47
  15. 218.30.13.48
  16. 218.30.13.49
  17. 218.30.13.34
复制代码
三、 IP地址转换成10进制整数
经常要判断一个ip是国内的还是国外的,有了下面程序再结合数据库查询...
  1. public class IP
  2. {
  3. private static long ipToLong(String strIP)
  4. //将127.0.0.1 形式的IP地址转换成10进制整数,这里没有进行任何错误处理
  5. {
  6. int j=0;
  7. int i=0;
  8. long [] ip=new long[4];
  9. int position1=strIP.indexOf(".");
  10. int position2=strIP.indexOf(".",position1+1);
  11. int position3=strIP.indexOf(".",position2+1);
  12. ip[0]=Long.parseLong(strIP.substring(0,position1));
  13. ip[1]=Long.parseLong(strIP.substring(position1+1,position2));
  14. ip[2]=Long.parseLong(strIP.substring(position2+1,position3));
  15. ip[3]=Long.parseLong(strIP.substring(position3+1));
  16. return (ip[0]<<24)+(ip[1]<<16)+(ip[2]<<8)+ip[3];
  17. }
  18. private static String longToIP(long longIP)
  19. //将10进制整数形式转换成127.0.0.1形式的IP地址
  20. {
  21. StringBuffer sb=new StringBuffer("");
  22. sb.append(String.valueOf(longIP>>>24));//直接右移24位
  23. sb.append(".");

  24.           //将高8位置0,然后右移16位
  25. sb.append(String.valueOf((longIP&0x00FFFFFF)>>>16));
  26. sb.append(".");
  27. sb.append(String.valueOf((longIP&0x0000FFFF)>>>8));
  28. sb.append(".");
  29. sb.append(String.valueOf(longIP&0x000000FF));
  30. sb.append(".");
  31. return sb.toString();
  32. }
  33. public static void main(String[] args)
  34. {
  35. System.out.println("IP地址的各种表现形式:\r\n");
  36. System.out.print("32位二进制形式:");
  37. System.out.println(Long.toBinaryString(3526601384L));
  38. System.out.print("十进制形式:");
  39. System.out.println(ipToLong("210.51.170.168"));
  40. System.out.print("普通形式:");
  41. System.out.println(longToIP(3526601384L));
  42. }
  43. }
复制代码
程序运行结果:
  1. IP地址的各种表现形式:

  2. 32位二进制形式:11001010011100000110000010100011
  3. 十进制形式:3396362403
  4. 普通形式:202.112.96.163.
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马