demo
import java.io.IOException;
import java.net.*;
/**
* 查找IP地址
*/
public class TestFindDNS {
public static void main(String[] args) throws IOException {
//
String href = "http://www.cncounter.com/tools/shorturl.php";
// 端口號
int port = parsePort(href);
// 域名
String host = parseHost(href);
// IP 地址
String address = parseIp(host);
//
System.out.println("host=" + host);
System.out.println("port=" + port);
System.out.println("address=" + address);
}
/**
* 獲取端口號
*
* @param href 網址, ftp, http, nntp, ... 等等
* @return
* @throws IOException
*/
public static int parsePort(String href) throws IOException {
//
URL url = new URL(href);
// 端口號; 如果 href 中沒有明確指定則爲 -1
int port = url.getPort();
if (port < 0) {
// 獲取對應協議的默認端口號
port = url.getDefaultPort();
}
return port;
}
/**
* 獲取Host部分
*
* @param href 網址, ftp, http, nntp, ... 等等
* @return
* @throws IOException
*/
public static String parseHost(String href) throws IOException {
//
URL url = new URL(href);
// 獲取 host 部分
String host = url.getHost();
return host;
}
/**
* 根據域名(host)解析IP地址
*
* @param host 域名
* @return
* @throws IOException
*/
public static String parseIp(String host) throws IOException {
// 根據域名查找IP地址
InetAddress.getAllByName(host);
InetAddress inetAddress = InetAddress.getByName(host);
// IP 地址
String address = inetAddress.getHostAddress();
return address;
}
}
根據IP獲取地址
package test;
import net.sf.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class GetAddressByIp {
public static void main(String[] args) {
String resout = "";
try {
String str = getJsonContent("http://ip.taobao.com/service/getIpInfo.php?ip="+"138.30.25.101");
System.out.println(str);
JSONObject obj = JSONObject.fromObject(str);
JSONObject obj2 = (JSONObject) obj.get("data");
String code = obj.get("code").toString();
if(code.equals("0")) {
resout = obj2.get("country")+"--" +obj2.get("area")+"--" +obj2.get("city")+"--" +obj2.get("isp");
} else {
resout = "IP地址有誤";
}
} catch(Exception e) {
e.printStackTrace();
resout = "獲取IP地址異常:"+e.getMessage();
}
System.out.println("result: " + resout);
}
public static String getJsonContent(String urlStr) {
try {
// 獲取HttpURLConnection連接對象
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
// 設置連接屬性
httpConn.setConnectTimeout(3000);
httpConn.setDoInput(true);
httpConn.setRequestMethod("GET");
// 獲取相應碼
int respCode = httpConn.getResponseCode();
if (respCode == 200) {
return ConvertStream2Json(httpConn.getInputStream());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
private static String ConvertStream2Json(InputStream inputStream) {
String jsonStr = "";
// ByteArrayOutputStream相當於內存輸出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
// 將輸入流轉移到內存輸出流中
try {
while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) {
out.write(buffer, 0, len);
}
// 將內存流轉換爲字符串
jsonStr = new String(out.toByteArray());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStr;
}
}