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
- 12、Swoole 中 TCP、UDP 和長連線、短連線TCPUDP
- 聊聊 TCP 長連線和心跳那些事TCP
- 一文讀透HTTP的長連線和短連線HTTP
- 輪詢、長輪詢、短連線、長連線區別對比
- 菜鳥學網路之 —— 長連線和短連線
- Mysql關於長連線短連線優劣比較MySql
- [場景設計]短連線服務
- Netty(一) SpringBoot 整合長連線心跳機制NettySpring Boot
- 線上短地址轉換聚合工具-toolfk程式設計師線上工具網程式設計師
- Oracle左外連線、右外連線、完全外連線以及(+)號用法Oracle
- 實現長連結轉化成短連結(新浪T.CN短連結以及騰訊URL.cn短網址)API介面程式碼分享API
- HTTP長連線HTTP
- PDO 長連線
- 如何把一個長連結轉短連結 短連結轉化器該如何使用
- 論文中常用的轉折、連線詞跟短語
- golang連線MySQL時候的連線池設定GolangMySql
- 內連線、左連線、右連線
- 阿里畢玄:程式設計師的成長路線阿里程式設計師
- TCP 三次握手原理以及半連線和全連線TCP
- SQL 改寫系列十:半連線轉內連線SQL
- 設計一個可靠的連線池
- PHP 這麼拉?長連線都搞不了?說說 PHP 的 socket 程式設計PHP程式設計
- 程式設計師玩連連看的正確姿勢程式設計師
- PHP實現長連結轉化成新浪短連結API介面程式碼分享PHPAPI
- Luat例項教程:tcp短連線TCP
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- 小閃對話:微信長連線設計的探討(三)
- 小閃對話:微信長連線設計的探討(二)
- 推薦幾個最新的騰訊URL短網址以及新浪TCN短連線的API介面API
- Websocket 突破最大長連線Web
- SQL Server如何判斷哪些會話/連線是長連線?SQLServer會話