- 浏览: 467387 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (272)
- java基础 (59)
- struts (8)
- spring (8)
- 数据库 (8)
- java 网络编程 (29)
- hibernate (3)
- JavaScript (10)
- 日志管理 (2)
- jsp (4)
- servlet (7)
- xml (4)
- ajax (2)
- web service (4)
- 算法与数据结构 (13)
- java 反射机制 (11)
- java 泛型 (3)
- java I/O (8)
- java 线程 (12)
- JavaEE (6)
- java解惑 (33)
- 工具 (5)
- MyEclipse编程实践 (1)
- OSGI (2)
- 设计模式 (9)
- 正则表达式 (0)
- EJB (3)
- Ubuntu linux (6)
- Android (1)
- web前端 (2)
- 找工作 (1)
- SCA (1)
- maven (1)
- 缓存 (1)
- json (1)
- javamail (1)
- 工作笔记 (2)
最新评论
-
霜花似雪:
博主可以分享一下源码吗?
使用maven构建web项目实例 -
王庆波-行:
很好的demo!
memcache使用实例 -
surpassno:
大写的牛逼
java可视化显示内存使用情况 -
zhulin0504:
怎么访问NetEcho.html页面呀???
applet与servlet的网络通信 -
springdata:
java多线程实例demo源代码下载:http://www.z ...
java多线程例子
当我们预备建立一个Web站点,就必须向域名登记机构申请一个Internet域名,因此,我们通常希望了解自己预备使用的域名是否已经被注册,这时,可以简单地访问InterNIC站点http://www.internic.net/whois.Html,在"Registry Whois"输入框中输入需查询的域名,就可以得到我们需要的结果。本文介绍了如何使用Java编程来实现这个过程。
一 原理
原理非常简单,域名的查询主要是基于RFC 954提供的WHOIS协议。在上述过程中,我们实际上是访问了InterNIC站点的WHOIS服务器,该服务器从WHOIS数据库中查询我们所需要的内容。
WHOIS服务器是一个基于"查询/响应"的TCP事务服务器,它运行在SRI-NIC机器上(26.0.0.73或10.0.0.51),向用户提供internet范围内的目录服务。本地主机上的用户程序可以通过Internet访问该服务器,其过程主要有下面三步:
(1)在TCP服务端口43(十进制)连接SRI-NIC服务主机;
(2)发送一个命令,以回车和换行(<CRLF>)结尾;
(3)接受相应命令的返回信息,一旦输出结束,服务器将关闭连接。
命令的格式非常简单。可以直接输入域名,例如,可以使用"sohu.com"查询"搜狐"网站的域名信息;也可以使用"help"得到具体的帮助信息。
二 Java socket编程简述
在Java中,使用Socket类可以实现客户端的sockets,建立与服务器的网络连接。本文使用下面所示的Socket类的构造器来创建一个流socket,并连接到主机"whois.internic.net"的端口43。
public Socket(String host, int port, boolean stream) throws IOException
其中,参数host为远程主机的主机名,port为远程主机的端口号,假如参数stream为true,则创建一个流socket,否则创建一个数据报socket。
假如创建socket时发生I/O错误,将抛掷一个IOException 异常。
当创建了一个连接到远程主机的socket对象后,我们可以使用getInputStream()和getOutputStream()方法分别得到该socket对象的输入流和输出流,用于对该socket进行数据读写,为了使应用程序设计简单,这些方法返回的流通常使用java.io包中的实例对象来处理,例如:DataInputStream和PrintWriter。
从socket读数据使用readline()方法,一次读取一行数据(字符串):
public String readLine() throws IOException
向socket写数据使用print()方法:
public void print(String s)
当完成socket通讯后,应该首先关闭DataInputStream和PrintWriter对象,最后才关闭socket对象。
三 源程序
whois.java利用JDK1.6编译通过,在Windows 6命令行提示符运行的方法为:
java whois < Internet域名或命令>
例如,查询"搜狐"的Internet域名信息可以:
java whois sohu.com
得到具体的帮助可以:
java whois help
您可以发现,屏幕输出的内容与使用浏览器访问http://www.internic.net/whois.html得到的内容完全一样。
一 原理
原理非常简单,域名的查询主要是基于RFC 954提供的WHOIS协议。在上述过程中,我们实际上是访问了InterNIC站点的WHOIS服务器,该服务器从WHOIS数据库中查询我们所需要的内容。
WHOIS服务器是一个基于"查询/响应"的TCP事务服务器,它运行在SRI-NIC机器上(26.0.0.73或10.0.0.51),向用户提供internet范围内的目录服务。本地主机上的用户程序可以通过Internet访问该服务器,其过程主要有下面三步:
(1)在TCP服务端口43(十进制)连接SRI-NIC服务主机;
(2)发送一个命令,以回车和换行(<CRLF>)结尾;
(3)接受相应命令的返回信息,一旦输出结束,服务器将关闭连接。
命令的格式非常简单。可以直接输入域名,例如,可以使用"sohu.com"查询"搜狐"网站的域名信息;也可以使用"help"得到具体的帮助信息。
二 Java socket编程简述
在Java中,使用Socket类可以实现客户端的sockets,建立与服务器的网络连接。本文使用下面所示的Socket类的构造器来创建一个流socket,并连接到主机"whois.internic.net"的端口43。
public Socket(String host, int port, boolean stream) throws IOException
其中,参数host为远程主机的主机名,port为远程主机的端口号,假如参数stream为true,则创建一个流socket,否则创建一个数据报socket。
假如创建socket时发生I/O错误,将抛掷一个IOException 异常。
当创建了一个连接到远程主机的socket对象后,我们可以使用getInputStream()和getOutputStream()方法分别得到该socket对象的输入流和输出流,用于对该socket进行数据读写,为了使应用程序设计简单,这些方法返回的流通常使用java.io包中的实例对象来处理,例如:DataInputStream和PrintWriter。
从socket读数据使用readline()方法,一次读取一行数据(字符串):
public String readLine() throws IOException
向socket写数据使用print()方法:
public void print(String s)
当完成socket通讯后,应该首先关闭DataInputStream和PrintWriter对象,最后才关闭socket对象。
三 源程序
import java.net.*; import java.io.*; public class whois { public final static int port = 43; public final static String hostname = "whois.internic.net"; public static void main(String[] args) { Socket theSocket; DataInputStream theWhoisStream; PrintStream ps; //检查命令行参数 if (args.length <1) { System.out.println("\nUsage: java whois <command>"); System.out.println("Parameters:"); System.out.println( "\tcommand = one or more Domain name, or other command."); System.out.println("Example:"); System.out.println("\tjava whois sohu.com"); System.out.println("\tjava whois help"); System.exit(1); //退出 } try { //在TCP服务端口43(十进制)连接SRI-NIC服务主机 theSocket = new Socket(hostname, port, true); ps = new PrintStream(theSocket.getOutputStream()); //发送用户提供的一个或多个命令 for (int i = 0; i < args.length; i++) ps.print(args[i] + " "); //以回车和换行(<CRLF>)结尾 ps.print("\r\n"); //接受相应命令的返回信息 theWhoisStream = new DataInputStream(theSocket.getInputStream()); String s; while ((s = theWhoisStream.readLine()) != null) { System.out.println(s); } //关闭DataInputStream和PrintWriter theWhoisStream.close(); ps.close(); //关闭socket theSocket.close(); } catch (IOException e) { System.err.println(e); } } }
whois.java利用JDK1.6编译通过,在Windows 6命令行提示符运行的方法为:
java whois < Internet域名或命令>
例如,查询"搜狐"的Internet域名信息可以:
java whois sohu.com
得到具体的帮助可以:
java whois help
您可以发现,屏幕输出的内容与使用浏览器访问http://www.internic.net/whois.html得到的内容完全一样。
发表评论
-
计算机网络知识
2011-06-01 16:19 791一个http请求的详细过程 我们来看当我们在浏览器输入htt ... -
java udp socket实例
2010-12-06 12:28 7119客户端: package udp; import jav ... -
线程池实现tcp socket
2010-12-01 17:23 2879前面的程序,当一个客户端请求到来时,服务器端就会临时性的创建一 ... -
tcp socket实例(改进)
2010-12-01 16:16 1592上一篇的程序服务器端只能接受一个客户端请求,本篇改为模拟多客户 ... -
java tcp socket实例
2010-12-01 13:44 1624网络编程的基本模型就是客户端到服务器端模型,一段必须提供一个固 ... -
telnet协议(转)
2010-10-14 17:17 1138我们知道Telnet服务器软 ... -
java 网络协议(一)Tcp多线程服务器端编程
2010-10-14 11:33 54851,通用服务器代码: package multiThread; ... -
java 网络协议(一)UDP
2010-10-14 09:24 1475UDP测试程序,无需建立连接 package udp; ... -
java 网络协议(一)Tcp
2010-10-14 08:52 51361,简化的服务器端程序 package tcp; imp ... -
java 网络协议(一)InetAddress和Socket(含源码)
2010-10-14 08:24 18821,ip地址和主机名互换 package getip; ... -
ftp协议2(转)
2010-10-12 16:26 962FTP协议工作原理 FTP有 ... -
ftp协议(转)
2010-10-12 16:21 1265ftp协议 FTP协议将使用两 ... -
SMTP服务协议(转)
2010-10-11 15:31 1245SMTP服务概述 鉴于本课程的默认读者群是那些对Inter ... -
利用socket发送接收邮件(转)
2010-10-11 15:18 4188这是在网上摘的,执行接收邮件出现:530 Authentica ... -
jdk6.0从入门到精通-----chapter5网络编程 新I/O(含源码下载)
2010-09-21 10:13 1429本例向用户通过参数指定的主机端口发送一段请求报文,然后读取和打 ... -
jdk6.0从入门到精通-----chapter6--http
2010-09-14 16:32 944用httpconnection进行文件下载,建立一般的jav ... -
java自学===Filter类的应用,验证用户
2010-09-14 14:37 938Filter类 package com; import ... -
java自学===Filter类的应用,网站数量统计
2010-09-14 12:31 1940package filterStatistic; imp ... -
jdk6.0从入门到精通-----chapter5网络编程 udp套接字
2010-09-12 13:46 1158用到的主要类DatagramPacket,DatagramSo ... -
jdk6.0从入门到精通-----chapter5网络编程 tcp连接池
2010-09-10 18:07 984package pool; import java.ne ...
相关推荐
**描述解析:**描述中提到`whois`是用来查询域名的IP地址以及所有者等信息的传输协议。这意味着通过`whois`,用户可以获取到关于网站域名的注册详情,包括但不限于所有者身份、注册日期、到期日期、注册商信息和联系...
Whois是一种基于TCP协议的网络查询服务,用于查询互联网上域名、IP地址等资源的注册和所有者信息。在IT行业中,Whois查询常用于网络安全分析、域名注册管理、商标保护以及反欺诈调查等领域。 Python-Whois库提供了...
1. **Whois协议**: Whois是一种TCP协议,运行在端口43上,用于查询域名或IP地址的注册信息,包括注册者、管理联系人、技术联系人、域名到期日期等。 2. **Whois服务器**: Whois查询通常通过连接到特定的Whois服务器...
1. Whois协议:Whois是一种TCP/IP协议,用于检索与特定域名或IP地址相关的注册信息。通过Whois服务器,用户可以查询到域名的注册商、注册人、管理员、技术联系人以及域名的状态等。 2. 域名信息:域名信息包括注册...
Ruby-Whois库简化了与WHOIS服务器交互的过程,使得开发者无需深入理解WHOIS协议的复杂性,就可以轻松地集成WHOIS查询功能到他们的应用程序中。 在Ruby-Whois库中,主要功能包括: 1. **查询接口**:用户可以使用...
1. **Whois协议** Whois是Internet Assigned Numbers Authority (IANA)定义的一种简单TCP协议,用于查询域名和IP地址的注册信息。服务器通过特定的端口(通常是43)提供服务,客户端发送查询请求,服务器返回相应的...
在互联网领域中,WHOIS是一种用于查询域名注册信息的标准协议。通过WHOIS查询可以获取与域名相关的各种信息,包括注册人、管理联系人、技术联系人、注册日期、过期日期等。这对于了解某个网站的所有权和其他相关信息...
PHP Whois查询类的定义与用法涉及到网络域名信息的检索,...对于有兴趣深入了解PHP Whois查询技术的读者,上述内容提供了一个良好的起点,并应进一步查阅相关的网络协议文档和最新动态,确保查询功能的准确性和时效性。
首先,我们需要理解Whois协议。Whois是一种基于TCP协议的服务,用于查询域名的注册信息。当您输入一个域名并执行Whois查询时,服务器会返回该域名的注册者、注册日期、过期日期等相关数据。这些信息对于购买新域名、...
按照屏幕上的指示进行操作,包括接受许可协议、选择安装路径等。 4. **配置环境变量**:安装完成后,为了让Whois命令在命令提示符下直接可用,你可能需要将安装目录添加到系统的PATH环境变量中。这通常涉及到打开...
3. **Whois协议**:Whois服务有自己的查询语法,如`whois example.com`。在`WhoisQuery.java`中,我们需要构建合适的查询字符串并发送到服务器。 4. **解析响应**:Whois服务器返回的结果通常是文本格式,可能包含...
whois是一种基于TCP协议的查询服务,用于查询互联网上的域名、IP地址等相关注册信息。它能够提供关于域名所有者、注册日期、到期日期、域名服务器等关键信息,帮助用户了解域名的归属和状态。 **2. whois查询的内容...
Whois 是一个网络协议,用于查询互联网上...通过研究源代码,不仅可以学习到VB的基本语法和网络编程技巧,还能深入理解Whois协议的工作机制。对于想要提升VB网络编程能力的初学者来说,这是一个不可多得的实践案例。
这些源码实现了与Whois服务器通信的协议,通常是TCP/IP协议,发送特定的查询请求,并解析返回的数据。在描述中提到的源码支持300余种域名,这意味着它不仅能够处理.com、.net、.org等常见顶级域名(TLDs),还能处理...
另外还有一个名为`Eula.txt`的文件,这通常包含了软件的使用许可协议,用户在安装前应仔细阅读以了解软件的使用条款。 安装过程如下: 1. 首先,你需要下载包含这些文件的压缩包。 2. 使用解压缩工具将其解压到一...
`whois` 是一个标准的网络协议,用于检索这种信息。在这个主题中,我们将深入探讨 `whois` 查询,特别是针对多域名后缀的查询方法。 一、`whois` 协议简介 `whois` 是一个基于 TCP 的简单查询/响应协议,用于获取 ...
WhoIs是一种Internet标准查询协议,用于查找与特定互联网资源(如域名)相关的注册信息,包括所有者、注册日期、到期日期等。在C#中,我们可以使用.NET Framework提供的System.Net命名空间中的类来实现WhoIs查询。 ...
在IT行业中,WhoIs查询是一种用于查找互联网上域名或IP地址所有者信息的协议。它通常用于知识产权调查、网络安全分析以及验证网站所有者的合法性。AJAX(Asynchronous JavaScript and XML)是Web开发的一种技术,...
2. **Whois协议**:Whois是Internet Assigned Numbers Authority (IANA)定义的一种文本查询协议。在VB中,你需要构造一个包含目标域名的查询字符串,并将其发送到Whois服务器的标准输入。 3. **异步编程**:由于...