`

socket-长连接&短连接

阅读更多
转载
链接:https://www.zhihu.com/question/22677800/answer/63806275


首先介绍下短链接和长连接的区别:


短连接
连接->传输数据->关闭连接
比如HTTP是无状态的的短链接,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
具体就是 浏览器client发起并建立TCP连接 -> client发送HttpRequest报文 -> server接收到报文->server handle并发送HttpResponse报文给前端,发送完毕之后立即调用socket.close方法
->client接收response报文->client最终会收到server端断开TCP连接的信号->client 端断开TCP连接,具体就是调用close方法。

也可以这样说:短连接是指SOCKET连接后,发送接收完数据后马上断开连接。
因为连接后接收了数据就断开了,所以每次数据接受处理不会有联系。 这也是HTTP协议无状态的原因之一。

 

长连接
连接->传输数据->保持连接 -> 传输数据-> ...........->直到一方关闭连接,多是客户端关闭连接。
长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。

 

 

HTTP在短链接和长连接上的选择:

HTTP是无状态的 ,也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话

HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的HTTP1.1 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。
如果浏览器或者服务器在其头信息加入了这行代码 Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了带宽。
实现长连接要客户端和服务端都支持长连接。

 

 

什么时候用长连接,短连接?
长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。

而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。

总之,长连接和短连接的选择要视情况而定。

具体网络中的应用的话:
http 1.0一般就指短连接,smtp,pop3,telnet这种就可以认为是长连接。一般的网络游戏应用都是长连接
分享到:
评论

相关推荐

    Java实现Socket长连接和短连接

    Socket连接分为两种类型:长连接和短连接。这两种连接方式各有特点,适用于不同的应用场景。 **1. 短连接(Short Connection)** 短连接通常用于一次性、非持久性的通信,如HTTP协议就是典型的短连接。在短连接中...

    c# Socket长连接 短链接 自己封装 通讯

    标题“c# Socket长连接 短链接 自己封装 通讯”揭示了我们将讨论的主题:如何使用C#实现Socket的长连接和短连接,并自定义通信协议。这里的关键点包括: 1. **Socket基础**:Socket是网络通信中的一个抽象概念,它...

    socket短连接和长连接 多线程的应用

    "短连接"和"长连接"是Socket连接的两种不同模式,它们在处理网络请求时有着显著的区别。 短连接(Short Connection)通常用于一次性或者较少交互的服务,如HTTP协议就是基于短连接的。在短连接中,每次通信完成后,...

    Socket-master.rar

    在网络环境中,由于各种原因(如网络波动、客户端程序异常等),客户端的Socket连接可能会突然断开。在这种情况下,客户端需要具备识别断线并重新建立连接的能力。这通常涉及到心跳机制,即客户端定期发送小量数据...

    Socket长连接demo

    在TCP/IP协议族中,Socket分为两种类型:短连接(Short-lived Connection)和长连接(Long-lived Connection)。短连接通常用于一次性传输数据,如HTTP请求;而长连接则适合于保持连接状态,以便进行多次数据交互,...

    Socket长连接异常处理

    编写网络程序时需要正确区分长、短连接,以便选择合适的连接模式。 对长连接的维护 长连接需要维护,包括检测对方的主动断连和宕机、异常退出及网络不通。可以使用“心跳”机制来检测对方的状态,并在检测到对方断...

    socket长连接demo

    相较于短连接,长连接减少了连接建立和关闭的开销,提高了通信效率。 在Java中,我们通常通过`java.net.Socket`和`java.net.ServerSocket`类来实现Socket编程。以下是一些关键知识点: 1. **创建ServerSocket**:...

    android-socket-nio-master.zip

    在Android中,NIO适用于服务器端需要处理大量短连接或长连接的场景,如聊天应用、实时游戏等。 在Socket通信中,NIO主要通过Selector和Channel两个核心组件来实现。Selector负责监听多个Channel的读写事件,而...

    socket通信,mina长连接通信

    2. **长连接**:与传统的Socket短连接不同,长连接保持在客户端和服务器之间长时间打开,避免了频繁的连接和断开,适用于需要持续交互的应用,如实时推送服务。 3. **MINA API**:MINA提供了一系列接口,如`...

    android客户端加服务端的socket长连接

    相比于短连接,长连接减少了连接建立和断开的开销,适用于需要频繁交互的应用场景,如即时通讯、在线游戏、推送服务等。 一、服务端Socket设置 1. 创建ServerSocket实例,指定监听的端口号。 2. 使用ServerSocket的...

    CSharp-Socket-.rar_C#实例 socket_SOCKET编程实例_c# socket 实例_c# socket

    - 在标签中提到了“短链接”,这可能是指每次通信完成后立即关闭Socket,而不是保持长连接。短链接适用于一次性的、短暂的通信需求。 综上所述,这个压缩包中的"C#+SOCKET编程文档及实例"将帮助开发者理解如何在C#...

    TCP长连接Socket心跳收发消息

    这就是所谓的“短连接”。然而,在某些场景下,频繁地建立和断开连接会增加额外的开销,因此TCP长连接应运而生。 TCP长连接是指在完成初始化的三次握手后,客户端与服务器之间保持连接状态不立即关闭,以便在需要时...

    Socket长连接心跳

    1. **建立Socket连接**:首先,客户端通过Socket类创建一个到服务器的连接。这通常涉及DNS解析、TCP三次握手等网络协议过程。 2. **心跳包设计**:心跳包应尽可能轻量,一般只包含必要的状态信息,如时间戳、序列号...

    长连接和短连接性能测试结果差异 (1).docx

    TCP长连接和短连接在性能测试中的差异主要体现在网络资源的使用、响应时间和系统负载上。本次测试通过LoadRunner工具的Java脚本进行模拟,对比了两种连接方式在并发线程数、每秒事务处理量(TPS)以及服务器资源消耗...

    Socket连接池的简单应用

    在深入探讨Socket连接池之前,我们需要了解两种基本的Socket连接方式:长链接和短链接。 ##### 2.1 长链接(Long Connection) 长链接是指当数据发送完成后,Socket连接并不会立即断开,而是保持连接状态直到发生...

    linux-socket-C-S.rar_C/S linux_linux c 串口_linux socket_linux 串口C

    Socket编程则是实现网络通信的另一种方式,适用于长距离、高速的数据传输。主要知识点包括: 1. **套接字创建**:`socket()`函数创建一个套接字描述符,指定协议族(如AF_INET)、套接字类型(如SOCK_STREAM,即TCP...

    Qt实现Socket断线重连机制

    在Qt中,我们可以使用QSocket类来创建和管理Socket连接。QSocket提供了TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)两种主要的网络协议类型。 断线重连机制是网络应用中常见的一种策略,...

    socket连接.zip

    在“socket连接.zip”压缩包中,我们主要关注的是Java实现的socket长连接和短连接服务端代码,以及它们如何处理XML和JSON等不同类型的数据。 首先,让我们了解一下Socket的基本概念。Socket是网络上的进程间通信...

    长连接和短连接性能测试结果差异.docx

    在IT行业中,性能测试是评估系统能力的关键环节,特别是对于网络通信来说,长连接和短连接的选择直接影响到系统的效率和资源消耗。本文将基于提供的文件内容,深入探讨TCP长连接和短连接的区别以及它们在性能测试中...

    libcurl长连接高并发高性能封装测试分析源代码

    首先研究下长连接和短连接的性能区别。curl内部是通过socket去连接通讯。socket每次连接最为耗时,如果能够复用连接,长时间连接,减少每次socket连接的时间,则可以大大减少时间,提高效率。 (2) 多线程。单个...

Global site tag (gtag.js) - Google Analytics