`

http和socket之长连接和短连接区别

    博客分类:
  • j2se
 
阅读更多

TCP/IP 
TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。 
在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。 
在传输层中有TCP协议与UDP协议。 
在应用层有:TCP包括FTP、HTTP、TELNET、SMTP等协议 
                 UDP包括DNS、TFTP等协议 
短连接 
连接->传输数据->关闭连接 
HTTP是无状态的,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 
也可以这样说:短连接是指SOCKET连接后发送后接收完数据后马上断开连接。 
  
长连接 
连接->传输数据->保持连接 -> 传输数据-> 。。。 ->关闭连接。 
长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。 
  
http的长连接 
HTTP也可以建立长连接的,使用Connection:keep-alive,HTTP 1.1默认进行持久连接。HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的 http1.0 可以显示的指定 keep-alive),但还是无状态的,或者说是不可以信任的。 
  
什么时候用长连接,短连接? 
 长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。 
  
而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。 
  
总之,长连接和短连接的选择要视情况而定。 
发送接收方式 
1、异步 
报文发送和接收是分开的,相互独立的,互不影响。这种方式又分两种情况: 
(1)异步双工:接收和发送在同一个程序中,由两个不同的子进程分别负责发送和接收 
(2)异步单工:接收和发送是用两个不同的程序来完成。 
2、同步 
报文发送和接收是同步进行,既报文发送后等待接收返回报文。 同步方式一般需要考虑超时问题,即报文发出去后不能无限等待,需要设定超时时间,超过该时间发送方不再等待读返回报文,直接通知超时返回。 
  
在长连接中一般是没有条件能够判断读写什么时候结束,所以必须要加长度报文头。读函数先是读取报文头的长度,再根据这个长度去读相应长度的报文。 

Socket是什么 

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
\"><br><br>通信过程:<br><img style=这里我们可以看到 MaxHashTableSize 被配置为比MaxFreeTcbs 大4倍,这样可以大大增加TCP建立的速度

分享到:
评论

相关推荐

    Java实现Socket长连接和短连接

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

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

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

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

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

    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**:...

    socket通信,mina长连接通信

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

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

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

    TCP长连接Socket心跳收发消息

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

    Socket长连接心跳

    心跳间隔需要根据网络环境和业务需求来设置,不宜过短以免增加不必要的网络负担,也不宜过长以免错过断线检测。 3. **心跳发送与接收**:客户端和服务器都需要实现心跳发送和接收的逻辑。在心跳间隔到达后,发送...

    关于http和socket区别

    #### Socket连接与HTTP连接的区别 **Socket**是一种用于网络通信的编程接口,它支持多种传输协议(如TCP、UDP),并提供了一组API来实现数据的发送与接收。Socket本身不是一个协议,而是一种封装了TCP/IP协议的编程...

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

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

    socket连接.zip

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

    TCP长短连接简单Demo

    TCP连接分为长连接和短连接,这两种连接方式各有其特点和适用场景。本Demo是用C++语言在VS2017环境下编写的,旨在帮助开发者理解TCP长连接和短连接的实现。 首先,我们要理解TCP连接的基本概念。TCP是一种面向连接...

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

    本文将基于提供的文件内容,深入探讨TCP长连接和短连接的区别以及它们在性能测试中的表现。 首先,TCP(传输控制协议)连接分为长连接和短连接。长连接是指在完成一次数据交换后继续保持连接状态,以便后续的数据...

    http和socket简介和对比

    - HTTP 连接通常是“短连接”,即客户端发送请求,服务器响应后立即关闭连接。HTTP 1.0 每次请求都需要新建连接,而 HTTP 1.1 支持持久连接,可处理多个请求。 - HTTP 请求-响应模型,客户端发起请求,服务器返回...

    Socket之长短连接[文].pdf

    一、长连接与短连接 长连接是指 client 方与 server 方先建立连接,然后不断开,接着进行报文发送和接收。这种方式下由于通讯连接一直存在,这种方式常用于 P2P 通信。短连接是指 Client 方与 server 每进行一次...

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

    TCP 长连接与短连接是网络通信中的两种不同连接方式,主要区别在于连接的持续时间和资源利用率。短连接通常是一次性操作后立即断开,适用于不频繁的交互,如HTTP请求;而长连接则在多次操作间保持连接,常用于需要...

    Socket连接池的简单应用

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

Global site tag (gtag.js) - Google Analytics