网络通信基本常识
什么是socket?
socket 是应用层与 TCP/P 协议族通信的中间软件抽象层,它是一组接口,主机A 的应用程序要能和主机B 的应用程序通信,必须通过 Socket 建立连接。
短连接
SOCKET 连接发送完数据后马上断开连接
长连接
建立 SOCKET 连接后不管是否使用都保持连接
BIO
阻塞的 I/O
①若一个服务器启动就绪,那么主线程就一直在等待着客户端的连接,这个等待过程中
主线程就一直在阻塞。
②在连接建立之后,在读取到 socket 信息之前,线程也是一直在等待,一直处于阻塞
的状态下的。
NIO
非阻塞读,使一个线程从channel发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,该线程可以继续做其他的事情。
非阻塞写,一个线程请求写入一些数据到channel,但不需要等待它完全写入,这个线程同时可以去做别的事情。
线程通常将非阻塞 IO 的空闲时间用于在其它通道上执行 IO 操作,所以一个单独的线程可以管理多个输入和输出通道(channel)。