Python socket客户端接收消息和发送心跳包
十分想念顺店杂可。。。
根据接口文档信息,接收消息
接口定义
Topfit服务端提供Socket端口侦听,以TCP方式提供数据接口。
推送场景为:异动系统中编辑的异动公式触发结果。
Socket消息的数据格式为基于JSON格式的字符串,在向Socket发送时应以UTF8格式编码后序列化为二进制字节流。
心跳测试:系统接收JSON格式心跳数据并做出响应,当客户端5分钟(可设置)无任何请求时,链接自动断开。
为防止TCP粘包现象,所有数据在发送前,字符串添加表头(0x1b,0x1b)字符和表尾(0x1c,0x1c),作为记录分割符。
下面为代码,仅供参考
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Time : 2020/11/19 13:50
# @Author : 甄超锋
import socket
import time
import threading
import json
class SocketTest(object):
def __init__(self, size, ip_port, login_dict):
"""
:param size: 接收报文大小
:param ip_port: (host,port)
:param login_dict: 登录报文
"""
self.sk = None
self.size = size
self.ip_port = ip_port
self.login_dict = login_dict
# 建立socket连接
def connect(self):
self.sk = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
self.sk.connect(self.ip_port)
except Exception as e:
print(e)
# 重新连接 5s/次
def reconnect(self):
while True:
try:
self.sk = socket.socket(socket.AF_INET, socket