pythonsocket程式設計之三:長連線、短連線以及心跳(轉藥師Aric的文章)
長連線:開啟一個socket連線,收發完資料後,不立刻關閉連線,可以多次收發資料包。
短連線:開啟一個socket連線,收發完資料後,立刻關閉連線。
心跳:長連線在沒有資料通訊時,定時傳送資料包(心跳),以維持連線狀態。
在python裡,其實不用做那麼複雜的事情,心跳檢測在TCP協議層會自動維護,python只需要呼叫介面設定就可以了,直接上程式碼:
server端:
#coding=utf-8
__author__ = `藥師Aric`
```
server端
長連線,短連線,心跳
```
import socket
BUF_SIZE = 1024
host = `localhost`
port = 8083
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((host, port))
server.listen(1) #接收的連線數
client, address = server.accept() #因為設定了接收連線數為1,所以不需要放在迴圈中接收
while True: #迴圈收發資料包,長連線
data = client.recv(BUF_SIZE)
print(data.decode()) #python3 要使用decode
# client.close() #連線不斷開,長連線
client端:
#coding=utf-8
__author__ = `藥師Aric`
```
client端
長連線,短連線,心跳
```
import socket
import time
host = `localhost`
port = 8083
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) #在客戶端開啟心跳維護
client.connect((host, port))
while True:
client.send(`hello world
`.encode())
print(`send data`)
time.sleep(1) #如果想驗證長時間沒發資料,SOCKET連線會不會斷開,則可以設定時間長一點
相關文章
- Socket程式設計-長連線與短連線,心跳(keep-alive)程式設計Keep-Alive
- JAVA之長連線、短連線和心跳包Java
- 長連線的心跳及重連設計
- 長連線的心跳保持設計
- 長連線和短連線
- 長連線與短連線
- 【轉載】通訊長連線與短連線
- 長連線和短連線的使用
- http的長連線和短連線HTTP
- HTTP長連線和短連線原理淺析HTTP
- HTTP協議中的短輪詢、長輪詢、長連線和短連線HTTP協議
- 12、Swoole 中 TCP、UDP 和長連線、短連線TCPUDP
- HTTP長連線、短連線究竟是什麼?HTTP
- http長短連線和長短輪詢HTTP
- 【Socket】關於socket長連線的心跳包
- 一文讀透HTTP的長連線和短連線HTTP
- 聊聊 TCP 長連線和心跳那些事TCP
- 談談HTTP協議中的短輪詢、長輪詢、長連線和短連線HTTP協議
- 輪詢、長輪詢、短連線、長連線區別對比
- Mysql關於長連線短連線優劣比較MySql
- 菜鳥學網路之 —— 長連線和短連線
- [場景設計]短連線服務
- Http 和TCP的關係,TCP長連線和短連線有什麼區別?HTTPTCP
- 程式設計使用WMI 控制連線屬性 (轉)程式設計
- Netty(一) SpringBoot 整合長連線心跳機制NettySpring Boot
- mysql連線池爆滿,釋放程式長連線殭屍程式MySql
- Oracle左外連線、右外連線、完全外連線以及(+)號用法Oracle
- Sql最佳化(九) 程式的可擴充套件性-- 短連線的危害,以及資料庫連線(connection)管理SQL套件資料庫
- PDO 長連線
- HTTP長連線HTTP
- 設計師圖解TCP連線過程圖解TCP
- 長 URL 轉短連結的簡單設計與實現
- 實現長連結轉化成短連結(新浪T.CN短連結以及騰訊URL.cn短網址)API介面程式碼分享API
- 使用mysql的長連線MySql
- SQL的四種連線:內連線 左外連線 右外連線 全連線SQL
- http Socket長連線HTTP
- php使用長連線PHP
- nginx 長連線配置Nginx