python socket 编程之三:长链接、短链接以及心跳

长链接:开启一个socket链接,收发完数据后,不马上关闭链接,能够屡次收发数据包。python

短链接:开启一个socket链接,收发完数据后,马上关闭链接。socket

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

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

server端:blog

#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\r\n'.encode())
    print('send data')
    time.sleep(1) #若是想验证长时间没发数据,SOCKET链接会不会断开,则能够设置时间长一点
相关文章
相关标签/搜索