<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      使用WHOIS協議查詢Internet域名

      [摘要]中國建設銀行云南省保山地區分行 楊紹方當我們準備建立一個Web站點,就必須向域名登記機構申請一個Internet域名,因此,我們通常希望了解自己準備使用的域名是否已經被注冊,這時,可以簡單地訪問In...
      中國建設銀行云南省保山地區分行 楊紹方

      當我們準備建立一個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.2編譯通過,在Windows 98/NT的命令行提示符運行的方法為:
      java whois < Internet域名或命令>
      例如,查詢"搜狐"的Internet域名信息可以:
      java whois sohu.com
      得到詳細的幫助可以:
      java whois help
      您可以發現,屏幕輸出的內容與使用瀏覽器訪問http://www.internic.net/whois.html得到的內容完全一樣。


      日韩精品一区二区三区高清