一、由域名求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();
}
}
程序運行結(jié)果:
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);
}
}
}
?
運行結(jié)果:
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地址轉(zhuǎn)換成10進(jìn)制整數(shù)
經(jīng)常要判斷一個ip是國內(nèi)的還是國外的,有了下面程序再結(jié)合數(shù)據(jù)庫查詢...
public class IP
{
private static long ipToLong(String strIP)
//將127.0.0.1 形式的IP地址轉(zhuǎn)換成10進(jìn)制整數(shù),這里沒有進(jìn)行任何錯誤處理
{
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進(jìn)制整數(shù)形式轉(zhuǎn)換成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地址的各種表現(xiàn)形式:\r\n");
System.out.print("32位二進(jìn)制形式:");
System.out.println(Long.toBinaryString(3526601384L));
System.out.print("十進(jìn)制形式:");
System.out.println(ipToLong("210.51.170.168"));
System.out.print("普通形式:");
System.out.println(longToIP(3526601384L));
}
}
程序運行結(jié)果:
IP地址的各種表現(xiàn)形式:
32位二進(jìn)制形式:11001010011100000110000010100011
十進(jìn)制形式:3396362403
普通形式:202.112.96.163.