TCP流套接字与UDP数据报套接字对比
API介绍
TCP协议核心的特点是面向字节流,是通过读取数据(单位字节)来完成通信。
TCP套接字与UDP套接字不同的点在于TCP是通过建立连接,使用输入流和输出流的方式完成通信。
ServerSocket
是创建服务端Socket的API,专门用于服务端
构造方法
方法
注:有客户端连接后,会自动返回一个Socket服务端对象,并且基于Socket建立与客户端的连接,否则阻塞等待
Socket
是客户端的Socket 或服务端中在接收客户端连接请求后返回的服务端Socket
不论是客户端或者服务端的Socket,都是在双方建立连接后保存对端信息,用来接收和发送数据的。
构造方法
方法
接下来我们实现一个回显服务器,来实现TCP协议下的连接方式
一些方法的介绍
Scanner:
可以看到,Scanner的构造方法中参数对象是可以为InputStream输入流对象的,因此使用Scanner方法可以直接写入到输入流对象中。
Scanner.hasnext():
通俗来讲,只有当客户端关闭时,返回false
PrintWriter:
对于PrintWriter来说,构造方法的参数对象也可以为OutputStream输出流对象。
服务端的实现
客户端的实现
回显服务器演示:
引入多线程实现一个服务器服务多个客户端场景
目前的代码只适用于一个服务器服务一个客户端的场景,:
如图,对于服务端而言,只限于监听一个客户端后执行processConnection方法为这个客户端服务,只有这个客户端停止运行才会连接下一个服务端。
我们要想实现多个客户端与服务器进行通信,需要引入多线程
首先我们需要打开编辑运行/调配设置的运行框,执行如下步骤,点击允许多个实例:
服务器使用多线程(线程池的方式)
修改一下服务器的start方法
显示: