socket
对外提供接口的第三方库,封装了tcp/ip协议,主要接口为create,listen,accept,connect,read和write等等。
长连接短链接
所谓长连接
指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接(心跳包),一般需要自己做在线维持。
而长连接通常就是: 连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接;
短连接
是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接。
通常的短连接操作步骤是:连接→数据传输→关闭连接;
比如Http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。
心跳包
可以指定数据,设置发送时间和发送次数
netty
基于javaNio的网络应用架构,面向缓冲区编程,组件有Channel、Buffer、Selector,
BIO
同步,阻塞io,一个客户端请求时,服务的需要提供线程处理io,这种模型对线程量的耗费极大,且线程利用率低,难以承受请求的高并发。BIO 虽然可以使用线程池+等待队列进行优化,避免使用过多的线程,但是依然无法解决线程利用率低的问题。
NIO