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);
}
}
}

20140623143636

Java网络编程:实现Whois 服务的客户端:目前有2 条留言

  1. 0楼
    小强:

    楼主的代码为什么没有高亮?仅代表http://www.javacui.com回访

    2014-07-23 上午 11:49 [回复]
    • 你好,代码已添加高亮!谢谢反馈!

      2014-07-29 下午 9:33 [回复]

发表评论


快捷键:Ctrl+Enter