一、BIO的理解
网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发送连接请求,通过三次握手建立连接,如果连接成功,双方就可以通过网络套接字(Socket)进行通信。在基于同步堵塞模式开发中,ServerSocket负责绑定Ip地址,启动监听端口。Socket负责发起连接操作。连接成功之后,双方通过输入和输出流进行同步堵塞式通信。
Socket和ServerSocket类库位于java.net包中,serverSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话,对于一个网络连接来说,套接字是平等的,不因为在服务器端或在客户端而产生不同的级别,不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。
套接字之间链接过程分为四步:
(1)服务器监听
服务器监听:是服务端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络的状态
(2)客户端请求服务器
客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器套接字的地址和端口号,然后就想服务器端套接字提出连接请求
(3)服务器确认
服务器端连接确认,是指当服务器端套接字监听到或