当前位置: 首页>編程日記>正文

http中长连接与短连接的区别,和实现方式。

http中长连接与短连接的区别,和实现方式。

一.短连接:在每次获取数据时,客户端都会与服务器进行三次握手建立连接,接受完数据以后再四次挥手断开连接。即每次客户端获取数据,服务器都会指派一个新的socket套接字来为客户端服务。

二.长连接:在客户端与服务器三次握手建立连接以后,客户端的每次接受数据都建立在这一个连接上,也即客户端每次获取数据对服务器而言都是用同一个套接字为其服务的。直到客户端获取结束以后再四次挥手断开连接。

三.长连接与短连接的区别

1.短链接http协议为http1.0,长连接的http协议为1.1

2.短连接由于是每次用新套接字来服务客户端,所以每次发送完数据以后都是由服务器关闭套接字,即服务器先开始四次挥手,以此来告知客户端,数据已经发送完毕。

因此实现短连接的套接字很简单,header中只需要有如下,并且发送完数据以后关闭套接字即可。

# header部分
response = "HTTP/1.1 200 ok\r\n"
response += "\r\n"
# body部分
response += "hello world" 
socket.send(response.encode("utf-8"))
socket.close()

而长连接则是由客户端先关闭套接字,即客户端先开始四次挥手,以此来告知服务器,不再获取数据。那么就面临一个问题,客户端如何确认服务器发送过来的数据已经发送完成?

解决的办法是在header段中添加content-Length 字段 而这个字段的值则是body内容的长度

# 将要发送的数据读出
body_content = f.read()
# 返回内容
# 返回header
response_header = "HTTP/1.1 200 ok\r\n"
response_header += f"content-Length:{len(body_content).encode('utf-8')}\r\n"
# 换行
response_header += "\r\n"
# 发送给客户端
new_socket.send(response_header.encode("utf-8") + body_content)

外面可以设置if 循环,只要套接字能接受到数据则使用这个段代码为客户端服务发送数据,若套接字接收到的数据为空,则证明客户端主动关闭发起了四次挥手,则服务器可以执行socket.close()。

四.

为什么不使用短连接而使用长连接?

1.由于现在网站页面上会存在很多数据,比如图片之类的,如果每次加载一个页面中有几十个图片,用短连接则需要建立几十次连接,长连接只需要建立一次连接发送多次请求,相较而言长连接会更快的返回数据。

2.短连接加载一个页面需要服务器为其不停的创建几十个套接字为其服务,而长连接只需要一个,因此可以节约出很多资源。


https://www.fengoutiyan.com/post/14369.html

相关文章:

  • 为实现以ADSL方式连接
  • adsl接入技术的特点有
  • 使能控制端该怎么连接
  • 总线连接方式是什么
  • 双连接的特点
  • 直接连接和间接连接
  • tcp长连接和短连接的区别
  • 构段方式
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機