什么是长连接 | 短连接?

某些朋友对长、短连接的概念存在误解,下面我们尝试厘清这2个概念。

1)一般情况下,Client成功连接到Server后,会发送1个或几个请求,收到Server端1个或几个应答;然后!就会非常识趣地马上调用close()关闭连接了。这就叫短连接

2)某些情况下,如果Client有很多数据要传给Server或者从Server获取,就不甘心于只是发送几个请求,在相当长(几秒,几分钟,甚至几个小时)的时间内,都不会调用close()关闭连接(我们称:Client端hold住了连接);而且为了防止Server有空闲连接超时断开的机制,通常Client会每隔几秒发一个心跳包告诉Server自己还活着。这就是长连接

综上2种情况,一个连接是长是短,几乎完全取决于Client的实现者

因此,最正确的理解是:一条连接从它创建到销毁,如果存在的时间长(短),就是长(短)连接

这是它们表面的含义,也是本质的含义。看来,是我们想复杂了!


【错误理解】

1,TCP是长连接,UDP是短连接?

答:长/短连接都是在TCP的前提下来说的,因为UDP没有连接的概念。UDP Client不需要与Server建立连接,它只需要在需要的时候发一个包出去就可以了。所以,更准确地说法应该是:TCP长连接、TCP短连接。

2,TCP是长连接,HTTP是短连接?

答:误以为TCP只能是长连接。我们再说一遍,TCP的连接有长有短。另外,HTTP 1.0确实是短连接,但是,HTTP 1.0加入了keepalive之后,也可以实现长连接。再到后来,出现了websocket,就是默认长连接的协议(注意默认两个字)。

猜你喜欢

转载自blog.csdn.net/iliveido_foxmail/article/details/79859913