Java网络编程:实现Whois 服务的客户端
Whois 是一个简单的目录服务协议,在RFC954 中加以定义。这个协议原先被设计用来跟踪管理员对Internet 主机和域的响应。Whois 客户端连接一个中央服务器和个人的请求目录,通常能从中获得一个电话号码和一个E-mail 地址。本例通过Java编程实现了Whois 服务的客户端。运行程序,并在命令行中加上用户名作为参数,就在客户端获得该用户的信息。
实现方法如下:
useWhoisClient 类有两个静态属性:端口43 和主机名whois.internic.net。客户端总是连接主机和端口。main()方法通过打开一个在whois.internic.net 的端口43 上的socket 连接。Socket 的OutputStream 对象关联到OutputStreamWriter 对象上。命令行中每个参数被写入输出流并被发送给Whois 服务器。Socket 的InputStream 对象被存储到变量raw 上,通过使用BufferedInputStream.in 来缓冲输入流。使用read()方法读取输入流并拷贝到System.out 上,直到read()返回-1,标志服务器响应结束。
程序代码:
1.编写useWhoisClient 类的基本框架,该类包含保存缺省端口的整型常量DEFAULT_PORT 和保存缺省主机的字符串常量DEFAULT_HOST,该类仅有main()方法,该方法建立服务器对象,获取连接的主机参数,建立socket 连接,创建输出流,获取输入流,实现Whois 服务客户端。
2.编写useWhoisClient 类,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import java.net.*; import java.io.*; public class useWhoisClient { //缺省端口 public final static int DEFAULT_PORT = 43; //缺省主机 public final static String DEFAULT_HOST = "whois.internic.net"; public static void main(String[] args) { InetAddress server; try { //建立服务器对象 server = InetAddress.getByName(DEFAULT_HOST); } catch (UnknownHostException e) { System.err.println("Error: Could not locate default host "+ DEFAULT_HOST); System.err.println("Check to make sure you're connected to the Internet and that DNS is funtioning"); System.err.println("Usage: java WhoisClient host port"); return; } int port = DEFAULT_PORT; try { //建立socket Socket theSocket = new Socket(server, port); //创建输出流 Writer out = new OutputStreamWriter(theSocket.getOutputStream(), "8859_1"); for (int i = 0; i < args.length; i++) out.write(args[i] + " "); out.write("\r\n"); out.flush(); //获取输入流 InputStream raw = theSocket.getInputStream(); //缓冲输入流 InputStream in = new BufferedInputStream(theSocket.getInputStream()); int c; while ((c = in.read()) != -1) System.out.write(c); } catch (IOException e) { System.err.println(e); } } } |
楼主的代码为什么没有高亮?仅代表http://www.javacui.com回访
2014-07-23 上午 11:49你好,代码已添加高亮!谢谢反馈!
2014-07-29 下午 9:33