java whois_Java如何实现简单的whois查询
Java如何实现简单的whois查询
利用Java socket 实现根据IP地址查询该IP相关的.注册信息。
源代码直接下载:java_whois.zip
相关的两个类WhoisBean.java 和WhoisQuery.java 代码实现如下:
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++;
// 默认读取100行数据
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;
}
}
运行WhoisQuery这个类就可以看到如下信息:
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如何实现简单的whois查询】相关文章:
java whois_Java如何实现简单的whois查询相关推荐
- java代码实现一个简单ES条件查询
1.导入es依赖 我使用的es是7.13.0的版本 <properties><elasticsearch.version>7.13.0</elasticsearch.ve ...
- AJAX for Java简单表数据查询实例
AJAX for Java简单表数据查询实例<?XML:NAMESPACE PREFIX = O /> AJAX WebShop 3对Java开发具有良好的支持,同时也提供了各种层次的后台 ...
- java 航班_Java实现简单航班查询系统-Go语言中文社区
#java实现简单航班管理系统 题目要求:声明一个Flight(航班)类,该类包含private域航班号(如:CA1430),起飞时间(如:10:15AM),到达时间(如:2:30PM).为该类声明合 ...
- 成绩查询系统源java代码_基于jsp的成绩查询系统-JavaEE实现成绩查询系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的成绩查询系统, 该项目可用各类java课程设计大作业中, 成绩查询系统的系统架构分为前后台两部分, 最终实现在线上 ...
- java中多条件与不定条件查询
java中多条件与不定条件查询 网站或各类管理系统都会用到搜索,会用到一个或多个不确定条件搜索,单条件搜索比较简单,有时候会有多个条件共同查询,如果系统中已经提供了相关的方法供你使用最好,像我做这老系 ...
- Whois查询接口文档
Whois查询接口文档 whois(读作"Who is",非缩写)是用来查询域名的IP以及所有者等信息的传输协议.简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名 ...
- python安全攻防---信息收集---whois查询
whois是用来查询域名的IP以及所有者信息的传输协议.简单地说,whois就是一个数据库,用来查询域名是否以及被注册,以及注册域名的详细信息(如域名所有人.域名注册商等). 使用whois查询,首先 ...
- java对mysql的简单操作的综合运用——登录+注册+修改密码
本篇博客是java对mysql的简单操作的综合运用--登录系统.java对mysql的简单操作的综合运用--注册系统.java对mysql的简单操作的综合运用--修改密码系统的整合. 因为使用的是数据 ...
- java对mysql的简单操作——增删改查的总结
增删改查的详细内容可以点击以下链接: java对mysql的简单操作--增加数据 java对mysql的简单操作--删除数据 java对mysql的简单操作--修改数据 java连接mysql5.1教 ...
最新文章
- 机器人瓦力船长机器人_警察“瓦力”来啦!机器人巡逻南京路 这样的它你喜欢吗?...
- java web应用解决乱码问题
- android path 详解
- 【译】Diving Into The Ethereum VM Part 2 — How I Learned To Start Worrying And Count The Storage Cost
- 会导致所有者权益减少的项目是_处置固定资产而发生的净损失为什么会导致所有者权益减少...
- jquery下载教程,Juery3.0框架使用案例以及基础语法;
- 使用模型压缩库Distiller遇到的问题
- sumo交通流仿真软件的使用说明
- 降噪提升动漫图片,人物照片等图片画质(分享)
- 养生的常见方法有哪些?
- WIN11 EDGE设置IE(internet explore)兼容相关
- MTK androiod5.1源码精简系统APP
- linux实验实训报告,linux实验实训报告.doc
- EasyNVS摄像机公网全终端无插件网页摄像机直播管理服务运行出现“请求服务不存在或已停止”
- MTO 和MaTO MMDTLZ
- vim E35: No previous regular expression
- Python爬取中原地产香港26281套在售二手房数据并分析
- 企业微信开发:获取 access_token(二)
- 卷子打印用什么软件,什么软件可直接扫描试卷打印
- 一个完整的产品专题页面策划思路是什么样子?
热门文章
- 一部手机,万物皆可复制粘贴,将AR玩出了新高度
- 关于OpenCV中常见函数用法总结
- linux 删除文件夹
- OpenCV数据结构与基本绘图(Mat 类、Point类、Scalar类等)
- RDKit | 基于RDKit输出分子结构图(Image)的方法
- Windows下有关NDK安装出现的问题的总结
- python mysql类里_Python MySql 操作类
- python acm 素数个数_湘潭大学OJ-1098求区间内素数个数问题
- 浙江大学医学院附属儿童医院倪艳组招聘博士后和科研助理-肠道微生物和代谢方向...
- 行业盛会!2018中国人体微生物组大会