亚洲国产日韩欧美在线a乱码,国产精品路线1路线2路线,亚洲视频一区,精品国产自,www狠狠,国产情侣激情在线视频免费看,亚洲成年网站在线观看

Java如何實(shí)現(xiàn)簡(jiǎn)單的whois查詢

時(shí)間:2023-03-16 19:07:29 SUN認(rèn)證 我要投稿
  • 相關(guān)推薦

Java如何實(shí)現(xiàn)簡(jiǎn)單的whois查詢

  利用Java socket 實(shí)現(xiàn)根據(jù)IP地址查詢?cè)揑P相關(guān)的注冊(cè)信息。

  源代碼直接下載:java_whois.zip

  相關(guān)的兩個(gè)類WhoisBean.java 和WhoisQuery.java 代碼實(shí)現(xiàn)如下:

  Java代碼

  import java.util.LinkedHashMap;

  import java.util.List;

  import java.util.Map;

  import java.util.Map.Entry;

  /**

  *

  * @author Michael sun

  */

  public class WhoisQuery {

  /**

  *

  * @param ip

  */

  private void queryIpInfo(String ip) {

  Map map = new LinkedHashMap();

  try {

  WhoisBean bean = new WhoisBean();

  bean.setTimeout(0);

  // bean.setServer("whois.apnic.net");

  bean.setServer("whois.ripe.net");

  bean.queryInfoByIp(ip);

  List infoList = bean.getInfoList();

  String value = "";

  String key = "";

  for (String infoTmp : infoList) {

  String[] arr = infoTmp.split(":[ ]*");

  if (arr.length > 1) {

  key = arr[0];

  value = arr[1];

  } else {

  value = arr[0].trim();

  }

  if (null == map.get(key)) {

  map.put(key, "");

  }

  value = map.get(key) + value;

  map.put(key, value);

  }

  } catch (Exception e) {

  e.printStackTrace();

  }

  for (Entry entry : map.entrySet()) {

  System.out.println(entry.getKey() + ":" + entry.getValue());

  }

  }

  /**

  * @param args

  */

  public static void main(String[] args) {

  String ip = "129.42.58.216";// "163.1.13.189";

  WhoisQuery query = new WhoisQuery();

  query.queryIpInfo(ip);

  }

  }

  Java代碼

  import java.io.BufferedReader;

  import java.io.InputStreamReader;

  import java.io.PrintStream;

  import java.net.Socket;

  import java.util.ArrayList;

  import java.util.List;

  /**

  * WhoisBean

  * @author Michael sun

  */

  public class WhoisBean {

  /**

  * server address

  */

  private String server = "";

  /**

  * port

  */

  private int port = 43;

  /**

  * timeout/minute

  */

  private int timeout = 0;

  /**

  * infoList

  */

  private List infoList = new ArrayList();

  /**

  * @param ip

  * @throws Exception

  */

  @SuppressWarnings("unchecked")

  public void queryInfoByIp(String ip) throws Exception {

  Socket theSocket = null;

  BufferedReader br = null;

  PrintStream ps = null;

  int qryCount = 0;

  while (qryCount < 5) {

  qryCount++;

  try {

  theSocket = new Socket(server, port);

  theSocket.setSoTimeout(timeout * 1000);

  ps = new PrintStream(theSocket.getOutputStream());

  ps.println(ip);

  br = new BufferedReader(new InputStreamReader(theSocket

  .getInputStream()));

  infoList.add("ip:" + ip);

  String readLine = "";

  int i = 0;

  System.out.println("Whois query read start.... ");

  while ((readLine = br.readLine()) != null) {

  System.out.println("***" + readLine);

  if (readLine.length() > 0 && readLine.charAt(0) != '%') {

  infoList.add(readLine);

  i++;

  // 默認(rèn)讀取100行數(shù)據(jù)

  if (i > 100 || readLine.startsWith("source")) {

  break;

  }

  }

  }

  System.out.println("querylist size:" + infoList.size());

  break;

  } catch (Exception e) {

  System.out.println("EXCEPTION : " + e);

  } finally {

  if (null != br) {

  br.close();

  }

  if (null != ps) {

  ps.close();

  }

  if (null != theSocket) {

  theSocket.close();

  }

  }

  }

  }

  /**

  * @return the server

  */

  public String getServer() {

  return server;

  }

  /**

  * @return the port

  */

  public int getPort() {

  return port;

  }

  /**

  * @return the timeout

  */

  public int getTimeout() {

  return timeout;

  }

  /**

  * @param pServer the server to set

  */

  public void setServer(String pServer) {

  server = pServer;

  }

  /**

  * @param pPort the port to set

  */

  public void setPort(int pPort) {

  port = pPort;

  }

  /**

  * @param pTimeout the timeout to set

  */

  public void setTimeout(int pTimeout) {

  timeout = pTimeout;

  }

  /**

  * @return the infoList

  */

  public List getInfoList() {

  return infoList;

  }

  /**

  * @param pInfoList the infoList to set

  */

  public void setInfoList(List pInfoList) {

  infoList = pInfoList;

  }

  }

  運(yùn)行WhoisQuery這個(gè)類就可以看到如下信息:

  Java代碼

  Whois query read start....

  ***% This is the RIPE Database query service.

  ***% The objects are in RPSL format.

  ***%

  ***% The RIPE Database is subject to Terms and Conditions.

  ***% See http://www.ripe.net/db/support/db-terms-conditions.pdf

  ***

  ***% Note: This output has been filtered.

  ***% To receive output for a database update, use the "-B" flag.

  ***

  ***% Information related to '129.0.0.0 - 129.255.255.255'

  ***

  ***inetnum: 129.0.0.0 - 129.255.255.255

  ***netname: EU-ZZ-129

  ***descr: Various Registries

  ***country: EU # Country is really world wide

  ***remarks: These addresses were issued by

  *** The IANA before the formation of

  *** Regional Internet Registries.

  ***

  ***org: ORG-NCC1-RIPE

  ***admin-c: iana1-RIPE

  ***tech-c: iana1-RIPE

  ***status: ALLOCATED UNSPECIFIED

  ***mnt-by: RIPE-NCC-HM-MNT

  ***mnt-lower: RIPE-NCC-HM-MNT

  ***mnt-routes: RIPE-NCC-RPSL-MNT

  ***source: RIPE # Filtered

  querylist size:17

  ip:129.42.58.216

  inetnum:129.0.0.0 - 129.255.255.255

  netname:EU-ZZ-129

  descr:Various Registries

  country:EU # Country is really world wide

  remarks:These addresses were issued byThe IANA before the formation ofRegional Internet Registries.

  org:ORG-NCC1-RIPE

  admin-c:iana1-RIPE

  tech-c:iana1-RIPE

  status:ALLOCATED UNSPECIFIED

  mnt-by:RIPE-NCC-HM-MNT

  mnt-lower:RIPE-NCC-HM-MNT

  mnt-routes:RIPE-NCC-RPSL-MNT

  source:RIPE # Filtered

【Java如何實(shí)現(xiàn)簡(jiǎn)單的whois查詢】相關(guān)文章:

Java語言的特點(diǎn)和實(shí)現(xiàn)機(jī)制02-27

java實(shí)現(xiàn)web服務(wù)器的方法03-30

如何實(shí)現(xiàn)員工的有效激勵(lì)04-01

企業(yè)如何實(shí)現(xiàn)綠色物流10-12

考生如何查詢自考成績(jī)03-23

自考如何查詢往年成績(jī)09-18

OA系統(tǒng)如何實(shí)現(xiàn)商務(wù)智能05-13

質(zhì)量管理創(chuàng)新如何實(shí)現(xiàn)03-26

如何更好地實(shí)現(xiàn)網(wǎng)站推廣03-29

如何實(shí)現(xiàn)對(duì)基層員工的有效激勵(lì)08-03