`

whois协议(转)

阅读更多
当我们预备建立一个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对象。
  三 源程序
  
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得到的内容完全一样。
分享到:
评论

相关推荐

    whois(windows下安装)

    **描述解析:**描述中提到`whois`是用来查询域名的IP地址以及所有者等信息的传输协议。这意味着通过`whois`,用户可以获取到关于网站域名的注册详情,包括但不限于所有者身份、注册日期、到期日期、注册商信息和联系...

    python-whois-0.7.2.tar_whois_

    Whois是一种基于TCP协议的网络查询服务,用于查询互联网上域名、IP地址等资源的注册和所有者信息。在IT行业中,Whois查询常用于网络安全分析、域名注册管理、商标保护以及反欺诈调查等领域。 Python-Whois库提供了...

    whois查询PHP源码

    1. **Whois协议**: Whois是一种TCP协议,运行在端口43上,用于查询域名或IP地址的注册信息,包括注册者、管理联系人、技术联系人、域名到期日期等。 2. **Whois服务器**: Whois查询通常通过连接到特定的Whois服务器...

    网站whois信息查询

    1. Whois协议:Whois是一种TCP/IP协议,用于检索与特定域名或IP地址相关的注册信息。通过Whois服务器,用户可以查询到域名的注册商、注册人、管理员、技术联系人以及域名的状态等。 2. 域名信息:域名信息包括注册...

    Ruby-Whois一个智能纯Ruby实现的WHOIS客户端与解析器

    Ruby-Whois库简化了与WHOIS服务器交互的过程,使得开发者无需深入理解WHOIS协议的复杂性,就可以轻松地集成WHOIS查询功能到他们的应用程序中。 在Ruby-Whois库中,主要功能包括: 1. **查询接口**:用户可以使用...

    whois查询经典源码

    1. **Whois协议** Whois是Internet Assigned Numbers Authority (IANA)定义的一种简单TCP协议,用于查询域名和IP地址的注册信息。服务器通过特定的端口(通常是43)提供服务,客户端发送查询请求,服务器返回相应的...

    php的whois查询

    在互联网领域中,WHOIS是一种用于查询域名注册信息的标准协议。通过WHOIS查询可以获取与域名相关的各种信息,包括注册人、管理联系人、技术联系人、注册日期、过期日期等。这对于了解某个网站的所有权和其他相关信息...

    PHP whois查询类定义与用法示例

    PHP Whois查询类的定义与用法涉及到网络域名信息的检索,...对于有兴趣深入了解PHP Whois查询技术的读者,上述内容提供了一个良好的起点,并应进一步查阅相关的网络协议文档和最新动态,确保查询功能的准确性和时效性。

    域名 whois 信息查询

    首先,我们需要理解Whois协议。Whois是一种基于TCP协议的服务,用于查询域名的注册信息。当您输入一个域名并执行Whois查询时,服务器会返回该域名的注册者、注册日期、过期日期等相关数据。这些信息对于购买新域名、...

    whois命令行安装文件.rar

    按照屏幕上的指示进行操作,包括接受许可协议、选择安装路径等。 4. **配置环境变量**:安装完成后,为了让Whois命令在命令提示符下直接可用,你可能需要将安装目录添加到系统的PATH环境变量中。这通常涉及到打开...

    Java实现简单whois查询

    3. **Whois协议**:Whois服务有自己的查询语法,如`whois example.com`。在`WhoisQuery.java`中,我们需要构建合适的查询字符串并发送到服务器。 4. **解析响应**:Whois服务器返回的结果通常是文本格式,可能包含...

    whois域名信息查询

    whois是一种基于TCP协议的查询服务,用于查询互联网上的域名、IP地址等相关注册信息。它能够提供关于域名所有者、注册日期、到期日期、域名服务器等关键信息,帮助用户了解域名的归属和状态。 **2. whois查询的内容...

    Whois 示例程序(2KB)...

    Whois 是一个网络协议,用于查询互联网上...通过研究源代码,不仅可以学习到VB的基本语法和网络编程技巧,还能深入理解Whois协议的工作机制。对于想要提升VB网络编程能力的初学者来说,这是一个不可多得的实践案例。

    whois域名信息查询源码

    这些源码实现了与Whois服务器通信的协议,通常是TCP/IP协议,发送特定的查询请求,并解析返回的数据。在描述中提到的源码支持300余种域名,这意味着它不仅能够处理.com、.net、.org等常见顶级域名(TLDs),还能处理...

    在命令提示符中使用whois命令的工具

    另外还有一个名为`Eula.txt`的文件,这通常包含了软件的使用许可协议,用户在安装前应仔细阅读以了解软件的使用条款。 安装过程如下: 1. 首先,你需要下载包含这些文件的压缩包。 2. 使用解压缩工具将其解压到一...

    whois多域名后缀查询

    `whois` 是一个标准的网络协议,用于检索这种信息。在这个主题中,我们将深入探讨 `whois` 查询,特别是针对多域名后缀的查询方法。 一、`whois` 协议简介 `whois` 是一个基于 TCP 的简单查询/响应协议,用于获取 ...

    C# 实现域名WhoIs 查询

    WhoIs是一种Internet标准查询协议,用于查找与特定互联网资源(如域名)相关的注册信息,包括所有者、注册日期、到期日期等。在C#中,我们可以使用.NET Framework提供的System.Net命名空间中的类来实现WhoIs查询。 ...

    使用AJAX进行WhoIs查询

    在IT行业中,WhoIs查询是一种用于查找互联网上域名或IP地址所有者信息的协议。它通常用于知识产权调查、网络安全分析以及验证网站所有者的合法性。AJAX(Asynchronous JavaScript and XML)是Web开发的一种技术,...

    Whois 示例程序

    2. **Whois协议**:Whois是Internet Assigned Numbers Authority (IANA)定义的一种文本查询协议。在VB中,你需要构造一个包含目标域名的查询字符串,并将其发送到Whois服务器的标准输入。 3. **异步编程**:由于...

Global site tag (gtag.js) - Google Analytics