博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python socket 编程之三:长连接、短连接以及心跳
阅读量:4922 次
发布时间:2019-06-11

本文共 1058 字,大约阅读时间需要 3 分钟。

长连接:开启一个socket连接,收发完数据后,不立刻关闭连接,可以多次收发数据包。

短连接:开启一个socket连接,收发完数据后,立刻关闭连接。

心跳:长连接在没有数据通信时,定时发送数据包(心跳),以维持连接状态。

在python里,其实不用做那么复杂的事情,心跳检测在TCP协议层会自动维护,python只需要调用接口设置就可以了,直接上代码:

server端:

#coding=utf-8__author__ = '药师Aric''''server端长连接,短连接,心跳'''import socketBUF_SIZE = 1024host = 'localhost'port = 8083server = 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 socketimport timehost = 'localhost'port = 8083client = 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\r\n'.encode())    print('send data')    time.sleep(1) #如果想验证长时间没发数据,SOCKET连接会不会断开,则可以设置时间长一点

 

转载于:https://www.cnblogs.com/xilouch/p/4618903.html

你可能感兴趣的文章
Oracle trunc()函数,decode()函数,substr函数,GREATEST函数,java中substring函数的用法...
查看>>
Ubuntu(Linux) 下 unzip 命令使用详解
查看>>
php中使用array_slice将数组中的元素分类
查看>>
关于C#的partial修饰符
查看>>
哨兵元素的应用总结
查看>>
关于Request.PathInfo
查看>>
fiddler抓手机报文的配置指南
查看>>
Linux/CentOS下修改MAC地址
查看>>
Centos7下yum安装mongodb
查看>>
Vmware Tools is currently being installed on your system(转)
查看>>
Linux学习笔记(Ubuntu操作系统)之hadoop学习之路
查看>>
try throw catch typeid
查看>>
scroll家族中的scrollWidth 和 scrollHeight
查看>>
mysql5.7忘记密码修改方法
查看>>
poj 1251续
查看>>
fmt 包中的函数和方法
查看>>
我所了解的一些路由器对比
查看>>
Can DBC文件翻译
查看>>
Yii2的深入学习--入口文件
查看>>
CSS 巧用 :before和:after
查看>>