Java核心技术·卷Ⅱ:高级特性(原书第10版)
上QQ阅读APP看书,第一时间看更新

4.1.1 使用telnet

telnet是一种用于网络编程的非常强大的调试工具,你可以在命令shell中输入telnet来启动它。

注意:在Windows中,需要激活telnet。要激活它,需要到“控制面板”,选择“程序”,点击“打开/关闭Windows特性”,然后选择“Telnet客户端”复选框。Windows防火墙将会阻止我们在本章中使用的很多网络端口,你可能需要管理员账户才能解除对它们的禁用。

你可能曾经使用过telnet来连接远程计算机,但其实你也可以用它与因特网主机所提供的其他服务进行通信。下面是一个可以操作的例子。请输入:

如图4-1所示,你可以得到与下面这一行相似的信息:

上面例子说明了什么?它说明你已经连接到了大多数UNIX计算机都支持的“当日时间”服务。而你刚才所连接的那台服务器就是由国家标准与技术研究所运维的,这家研究所负责提供铯原子钟的计量时间。(当然,由于网络延迟的缘故,原子钟反馈过来的时间并不完全准确。)

图4-1 “当日时间”服务的输出

按照惯例,“当日时间”服务总是连接到端口13。

注意:在网络术语中,端口并不是指物理设备,而是为了便于实现服务器与客户端之间的通信所使用的抽象概念(见图4-2)。

图4-2 连接到服务器端口的客户端

运行在远程计算机上的服务器软件不停地等待那些希望与端口13连接的网络请求。当远程计算机上的操作系统接收到一个请求与端口13连接的网络数据包时,它便唤醒正在监听网络连接请求的服务器进程,并为两者建立连接。这种连接将一直保持下去,直到被其中任何一方中止。

当你开始用time-a.nist.gov在端口13上建立telnet会话时,网络软件中有一段代码非常清楚地知道应该将字符串“time-a.nist.gov”转换为正确的IP地址129.6.15.28。随后,telnet软件发送一个连接请求给该地址,请求一个到端口13的连接。一旦建立连接,远程程序便发送回一行数据,然后关闭该连接。当然,一般而言,客户端和服务器在其中一方关闭连接之前,会进行更多的对话。

下面是另一个同类型的试验,但它更加有趣。请执行以下操作:

然后非常仔细地键入以下内容:

也就是在末尾按两次Enter键。

图4-3显示了以上操作的响应结果。它看上去应该是你非常熟悉的——你得到的是一个HTML格式的文本页,即Cay Horstmann的主页。

图4-3 使用telnet访问HTTP端口

上述操作与Web浏览器访问某个网页所经历的过程是完全一致的,它使用HTTP向服务器请求Web页面。当然,浏览器能够更精致地显示HTML代码。

注意:如果一台Web服务器用相同的IP地址为多个域提供宿主环境,那么在连接这台Web Server时,就必须提供Host键/值对。如果服务器只为单个域提供宿主环境,则可以忽略该键/值对。