什么是长连接和短连接
在日常项目中,大多的时候我们用的是短连接,一个请求过来,一个线程处理完该请求,线程被线程池回收,这个请求就关闭了.虽然这能满足很大部分的需求,但是也有些问题,比如说:如果客户端发的请求比较多,比较频繁,服务端就会忙于建立连接处理请求,由于服务端的线程数也有限,并发比较大的话有可能会造成服务端的崩溃.那有没有一种办法使连接少一些,让一个线程可以处理多个连接?长连接的出现就是为了解决上面的问题
长连接
client与server先建立连接以后不断开,然后进行通信(也就是发送报文)。这种方式由于连接一直存在,所以被称为长连接。经常用于P2P通信。
建立连接——数据传输…(保持连接)…数据传输——关闭连接
短连接
Client与server每进行一次通信(报文)才发起连接,交易完毕后 立即断开连接。此方式常用于一点对多通讯。C/S通信用得比较多。
建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接
长连接与短连接的使用时机
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多的情况。每个 TCP连接的建立都需要三次握手,每个TCP连接的断开要四次握手。如果每次 操作都要建立连接然后再操作的话处理速度会降低,所以每次操作下次操作 时直接发送数据就可以了,不用再建立TCP连接。例如:数据库的连接用长连接,如果用短连接频繁的通信会造成socket错误,频繁的socket创建也是对资源的浪费。
在具体的网络应用中,smtp,pop3,telnet,网络游戏应用一般是长连接
短连接
web网站的http服务一般都用短连接。因为长连接对于服务器来说要耗费一定 的资源。像web网站这么频繁的成千上万甚至上亿客户端的连接用短连接更省 一些资源。试想如果都用长连接,而且同时用成千上万的用户,每个用户都 占有一个连接的话,可想而知服务器的压力有多大。所以并发量大,但是每个用户又不需频繁操作的情况下需要短连接。
————————————————
版权声明:本文为CSDN博主「不羁朔风」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36071795/article/details/83791920