@@ -94,7 +94,7 @@ NIC 有一个 IP 地址,是计算机的一部分。网桥连接两个网段,
有关 OSI 层的更完整协议列表,请参见[https://en.wikipedia.org/wiki/List_of_network_protocols_(OSI_ 模型)](https://en.wikipedia.org/wiki/List_of_network_protocols_(OSI_model))。我们无法解决所有这些协议,我们将重点讨论 Java SDK 支持的更重要的协议。
考虑 Web 页面从服务器到客户端的传输方式。当数据发送到客户机时,它将被封装在 HTTP 消息中,HTTP 消息进一步封装在 TCP、IP 和链路级协议消息中,每个消息通常包含一个页眉和页脚。这个封装的头集通过 Internet 发送到目标客户机,在那里为每个封装头提取数据,直到显示原始 HTML 文件。
考虑 Web 页面从服务器到客户端的传输方式。当数据发送到客户端时,它将被封装在 HTTP 消息中,HTTP 消息进一步封装在 TCP、IP 和链路级协议消息中,每个消息通常包含一个页眉和页脚。这个封装的头集通过 Internet 发送到目标客户端,在那里为每个封装头提取数据,直到显示原始 HTML 文件。
幸运的是,我们不需要熟悉这个过程的细节。许多类隐藏了这是如何发生的,从而使我们能够专注于数据。
...
...
@@ -525,7 +525,7 @@ Java 使用`URI`类来表示 URI,并且它拥有几种方法来提取 URI 的
连接到站点并检索数据的最简单方法之一是通过`URL`类。您只需要提供站点的 URL 和协议的详细信息。`InetAddress`类的实例将包含一个 IP 地址,可能还有该地址的主机名。
`URLConnection`课程在[第一章](1.html"Chapter 1. Getting Started with Network Programming")*网络编程入门*中介绍。它还可以用于提供对由 URL 表示的 Internet 资源的访问。我们将在[第 4 章](4.html"Chapter 4. Client/Server Development")、*客户机/服务器开发*中讨论该类及其使用。
`URLConnection`课程在[第一章](1.html"Chapter 1. Getting Started with Network Programming")*网络编程入门*中介绍。它还可以用于提供对由 URL 表示的 Internet 资源的访问。我们将在[第 4 章](4.html"Chapter 4. Client/Server Development")、*客户端/服务器开发*中讨论该类及其使用。
在[第 1 章](1.html"Chapter 1. Getting Started with Network Programming")*网络编程入门*中介绍的时间服务器和客户端将在此处实现,以演示缓冲区和通道的使用。这些应用程序很简单,但它们说明了如何将缓冲区和通道一起使用。我们将首先创建一个服务器,然后创建一个使用该服务器的客户机。
在[第 1 章](1.html"Chapter 1. Getting Started with Network Programming")*网络编程入门*中介绍的时间服务器和客户端将在此处实现,以演示缓冲区和通道的使用。这些应用程序很简单,但它们说明了如何将缓冲区和通道一起使用。我们将首先创建一个服务器,然后创建一个使用该服务器的客户端。
## 创建时间服务器
...
...
@@ -188,7 +188,7 @@ public class ServerSocketChannelTimeServer {
## 创建时间客户端
客户机是在`SocketChannelTimeClient`类中实现的,定义如下。为了简化示例,假定客户机与服务器位于同一台机器上。使用 IP 地址`127.0.0.1`创建`SocketAddress`实例,并与端口`5000`关联。`SocketChannel`类的`open`方法返回一个`SocketChannel`实例,该实例将用于处理 try with resources 块中服务器的响应:
客户端是在`SocketChannelTimeClient`类中实现的,定义如下。为了简化示例,假定客户端与服务器位于同一台机器上。使用 IP 地址`127.0.0.1`创建`SocketAddress`实例,并与端口`5000`关联。`SocketChannel`类的`open`方法返回一个`SocketChannel`实例,该实例将用于处理 try with resources 块中服务器的响应:
此类和其他支持类及接口是`com.sun.net.httpserver`包的成员。它们通常包含在大多数 IDE 中。API 文档可在[中找到 http://docs.oracle.com/javase/8/docs/jre/api/net/httpserver/spec/index.html?com/sun/net/httpserver/package-summary.html](http://docs.oracle.com/javase/8/docs/jre/api/net/httpserver/spec/index.html?com/sun/net/httpserver/package-summary.html)。
...
...
@@ -593,14 +593,14 @@ public class HttpURLConnectionExample {
@@ -837,7 +837,7 @@ public class SymmetricEchoServer {
## 对称客户端应用
下面将介绍客户机应用程序,它与[第 1 章](1.html"Chapter 1. Getting Started with Network Programming")*网络编程入门*中开发的客户机应用程序非常相似。它使用与服务器中相同的`getSecretKey`方法。对称加密技术中解释的`encrypt`方法用于加密用户的消息。这两种方法在此不重复:
下面将介绍客户端应用程序,它与[第 1 章](1.html"Chapter 1. Getting Started with Network Programming")*网络编程入门*中开发的客户端应用程序非常相似。它使用与服务器中相同的`getSecretKey`方法。对称加密技术中解释的`encrypt`方法用于加密用户的消息。这两种方法在此不重复:
```java
publicclassSymmetricEchoClient{
...
...
@@ -905,7 +905,7 @@ public class SymmetricEchoClient {
}
```
我们现在准备好看客户机和服务器是如何交互的。
我们现在准备好看客户端和服务器是如何交互的。
## 对称客户端/服务器正在运行
...
...
@@ -947,7 +947,7 @@ public class SymmetricEchoClient {