在 11.2 节中学习了如何实现 UDP 通信,本节中将学习在程序中如何实现 TCP 通信。TCP 通信如果 UDP 通信一样,也能实现两台计算机之间的通信,但 TCP 通信的两端需要创建 socket 对象。UDP 通信与 TCP 通信的区别在于,UDP 中只有发送端和接收端,不区分客户端和服务器端,计算机之间可以任意地发送数据;而 TCP 通信是严格区分客户端与服务器端的,在通信时,必须先由客户端去连接服务器端才能实现通信,服务器端不可以主动连接客户端,并且服务器端程序需要事先启动,等待客户端的连接。

    在 JDK 中提供了两个用于实现 TCP 程序的类,一个是 ServerSocket 类,用于表示服务器端;一个是 Socket 类,用于表示客户端。通信时,首先要创建代表服务器端的 ServerSocket 对象,创建该对象相当于开启一个服务,此服务会等待客户端的连接;然后创建代表客户端的 Socket 对象,使用该对象向服务器端发送请求,服务器端响应请求后,两者才建立连接,开始通信。整个通信过程如下图所示:
    image.png