短连接

(通常浏览器访问服务器的时候就是短链接)
连接→数据传输→关闭连接
1.client与server通过三次握手建立连接,client发送请求消息,server返回响应
2.双方都可以发起close操作,不过一般都是client先发起close操作
3.短链接一般只会在client/server之间传递一次请求
4.对于并发量大,请求频率低的建议使用短连接

长连接

(数据库是TCP长连接)
连接→数据传输→保持连接(心跳)→数据传输→保持连接(心跳)→……→关闭连接
1.client向server发起连接,server接受client连接,双方建立连接
2.client与server完成一次读写之后,他们之间的连接并不会主动关闭
3.只要双方不提出关闭请求并且不出现异常,这条连接就一直存在,操作系统不会自动去关闭它,甚至经过物理网络拓扑的改变之后仍然可以使用
4.长连接可以省去较多的TCP建立和关闭的操作,可以较少CPU及内存的使用,减少网络阻塞,当发生错误时,可以在不关闭连接的情况下进行提示

因为网络的不可靠性,有可能在TCP保持长连接的过程中,由于突发情况,例如:网线被拔出,突然掉电等,会造成服务器和客户端的连接中断。心跳机制即可解决此类问题

心跳检测步骤:

1.客户端每隔一个时间发送一个探测包给服务器(包的内容没有什么特别规定,包一般都是很小,或者只包含包头的一个空包)
2.客户端发包时启动一个超时定时器
3.服务端接收到检测包,应该回应一个包
4.如果客户机收到服务器的应答包,则说明服务器正常,删除超定时器
5.如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了