TCP通信方式的实现

5.TCP通信方式的实现

TCP通信方式的示意图如图2.11.1所示。

图2.11.1 TCP通信方式的示意图

(1)服务器端程序

绑定端口→监听等待客户端的连接请求→收到请求→建立连接→获得socket对象→基于该socket对象与客户端建立输入流和输出流→两端通信→关闭连接。

【代码11.1】TCP通信方式服务器端的实现

在代码11.1第12行中,socket.getInputStream()先在socket网络连接对象上获得输入字节流,然后将这个字节流转换为字符流(创建InputStreamReader对象),最后将其转换为缓存流(创建Buffered Reader对象in)。

在代码11.1第14行中,socket.getOutputStream()先在socket网络连接对象上获得输出字节流,然后将这个字节流转换为字符流(创建OutputStream Wirter对象),最后其转换为缓存流(创建Print Writer对象out,第二个参数true设定自动刷新缓存区)。

以上创建输入输出流是“装饰器模式”的一种实体应用,大家可以自行了解。

(2)客户端程序

向某个IP地址的服务器端的某个端口程序发起请求→与该服务器端的该端口建立连接→获得socket对象→基于该socket对象与服务器端建立输入流和输出流→两端通信→关闭连接。

【代码11.2】TCP通信方式客户端的实现

可以看到,客户端在socket对象上建立其与服务器端的输入输出流,和服务器端是一样的,见代码11.2的第7行和第9行。注意,服务器和客户端的输入输出操作要匹配,服务器首先发送“hello”给客户端,那么客户端首先接收字符串,然后服务器端接收字符串,客户端发送字符串“hello,server”给服务器端。可以看到,客户端发送的字符串由服务器端接收并输出在服务器端的控制台上;服务器端发送的字符串由客户端接收并输出在客户端的控制台上。