转自:https://blog.csdn.net/javajxz008/article/details/50468134
更加详细的分析:https://www.cnblogs.com/xujiming/p/5448721.html
一般的socket通信过程:
建立连接
①客户端----------------服务端
通讯
②客户端----------------服务端
断开连接
③客户端----------------服务端
在一次TCP通讯中,先通过三次握手建立连接,客户端和服务端建立连接,进行数据的读取和操作。然后通过四次握手断开连接。
但是,在实际的操作过程中,有很多场景需要进行高并发的通讯。
TCP每次连接需要消耗资源,不能老是断了连,连了断,这样是很消耗资源的。在一些操作频繁,并发数不是很多的点到点的情况下(长时间连接也是消耗资源的),适合使用长连接。在一些操作不是很频繁,并发数不是很多的情况下,一点对多点的情况下,适合使用短连接。
长连接:客户端和服务端在进行一次TCP连接之后,不会立刻断开。还会在后续为数据提供读写服务。客户端和服务端采用心跳保持连接。在所有的数据读写完成之后,断开连接。
短连接:建立连接-----通讯-------断开连接。通讯后立马断开连接,释放资源。