• 什么是长连接和短连接


    在日常项目中,大多的时候我们用的是短连接,一个请求过来,一个线程处理完该请求,线程被线程池回收,这个请求就关闭了.虽然这能满足很大部分的需求,但是也有些问题,比如说:如果客户端发的请求比较多,比较频繁,服务端就会忙于建立连接处理请求,由于服务端的线程数也有限,并发比较大的话有可能会造成服务端的崩溃.那有没有一种办法使连接少一些,让一个线程可以处理多个连接?长连接的出现就是为了解决上面的问题

    长连接

    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

  • 相关阅读:
    python包管理工具pip使用手册
    Java 校验是否为连续的区间
    AngularJS的uigrid的列表数据实现换行
    家族信托二十大功能全解读
    AngularJS前端,directive的template的点击事件 绑定
    递归和循环的区别
    Oracle数据库锁表排查
    JavaScript判断对象是否是NULL(转)
    西安出差已经一年多了
    发现个了不得的项目
  • 原文地址:https://www.cnblogs.com/moonsoft/p/15884163.html
Copyright © 2020-2023  润新知