python socket 粘包怎么处理。

m0_61814618 2023-09-21 12:12:00

数据包尾部 /r/n 头部数据段长度。

例:

##3639QN=20230920170244180;ST=22;CN=2061;PW=BBBBBBNMAAAAAAAAAAAABB4E;MN=0909090987654;Flag=5;CP=&&DataTime=20180410040000;a24001-Avg=1.68,a24001-Flag=N;a24002-Avg=0.948,a24002-Flag=N;a24038-Avg=0.221,a24038-Flag=N;a24037-Avg=0.558,a24037-Flag=N;a24041-Avg=0.21,a24041-Flag=N;a24039-Avg=0.076,a24039-Flag=N;a24503-Avg=0.005,a24503-Flag=N;a24514-Avg=0.008,a24514-Flag=N;a24537-Avg=0.044,a24537-Flag=N;a24011-Avg=0.018,a24011-Flag=N;a24513-Avg=0.017,a24513-Flag=N;a24042-Avg=0.025,a24042-Flag=N;a24515-Avg=0.011,a24515-Flag=N;a24506-Avg=0.0,a24506-Flag=N;a24036-Avg=0.009,a24036-Flag=N;a24510-Avg=0.004,a24510-Flag=N;a24504-Avg=0.007,a24504-Flag=N;a24512-Avg=0.005,a24512-Flag=N;a24012-Avg=0.004,a24012-Flag=N;a24043-Avg=0.009,a24043-Flag=N;a24084-Avg=0.011,a24084-Flag=N;a24536-Avg=0.001,a24536-Flag=N;a24507-Avg=0.001,a24507-Flag=N;a24511-Avg=0.001,a24511-Flag=N;a24070-Avg=0.006,a24070-Flag=N;a24044-Avg=0.052,a24044-Flag=N;a24068-Avg=0.001,a24068-Flag=N;a24517-Avg=0.0,a24517-Flag=N;a24516-Avg=0.0,a24516-Flag=N;a24502-Avg=0.001,a24502-Flag=N;a24045-Avg=0.612,a24045-Flag=N;a24053-Avg=0.137,a24053-Flag=N;a24064-Avg=0.002,a24064-Flag=N;a24059-Avg=0.107,a24059-Flag=N;a24063-Avg=0.005,a24063-Flag=N;a24077-Avg=0.001,a24077-Flag=N;a24074-Avg=0.002,a24074-Flag=N;a24076-Avg=0.0,a24076-Flag=N;a24061-Avg=0.004,a24061-Flag=N;a24078-Avg=0.01,a24078-Flag=N;a24079-Avg=0.658,a24079-Flag=N;a25002-Avg=0.384,a25002-Flag=N;a25003-Avg=0.118,a25003-Flag=N;a25004-Avg=0.039,a25004-Flag=N;a25504-Avg=0.059,a25504-Flag=N;a25038-Avg=0.01,a25038-Flag=N;a25006-Avg=0.019,a25006-Flag=N;a25034-Avg=0.001,a25034-Flag=N;a25033-Avg=0.002,a25033-Flag=N;a25501-Avg=0.005,a25501-Flag=N;a25014-Avg=0.004,a25014-Flag=N;a25021-Avg=0.0,a25021-Flag=N;a25500-Avg=0.001,a25500-Flag=N;a25019-Avg=0.001,a25019-Flag=N;a25020-Avg=0.0,a25020-Flag=N;a25506-Avg=0.0,a25506-Flag=N;a25503-Avg=0.001,a25503-Flag=N;a25059-Avg=0.0,a25059-Flag=N;a05009-Avg=0.722,a05009-Flag=N;a05014-Avg=0.025,a05014-Flag=N;a24099-Avg=0.89,a24099-Flag=N;a24046-Avg=0.024,a24046-Flag=N;a24008-Avg=0.111,a24008-Flag=N;a24015-Avg=0.037,a24015-Flag=N;a05008-Avg=0.256,a05008-Flag=N;a24047-Avg=0.002,a24047-Flag=N;a05013-Avg=0.103,a05013-Flag=N;a24003-Avg=1.205,a24003-Flag=N;a24016-Avg=0.009,a24016-Flag=N;a24111-Avg=0.009,a24111-Flag=N;a24004-Avg=0.084,a24004-Flag=N;a24018-Avg=0.001,a24018-Flag=N;a24005-Avg=0.091,a24005-Flag=N;a24017-Avg=0.336,a24017-Flag=N;a24049-Avg=0.002,a24049-Flag=N;a24027-Avg=0.08,a24027-Flag=N;a24007-Avg=0.002,a24007-Flag=N;a24112-Avg=0.021,a24112-Flag=N;a24054-Avg=0.0,a24054-Flag=N;a24019-Avg=0.008,a24019-Flag=N;a24050-Avg=0.008,a24050-Flag=N;a24034-Avg=0.0,a24034-Flag=N;a25010-Avg=0.022,a25010-Flag=N;a24009-Avg=0.002,a24009-Flag=N;a24020-Avg=0.061,a24020-Flag=N;a25012-Avg=0.001,a25012-Flag=N;a25011-Avg=0.001,a25011-Flag=N;a24110-Avg=0.001,a24110-Flag=N;a24006-Avg=0.001,a24006-Flag=N;a25013-Avg=0.001,a25013-Flag=N;a25068-Avg=0.0,a25068-Flag=N;a25015-Avg=0.0,a25015-Flag=N;a24113-Avg=0.0,a24113-Flag=N;a31002-Avg=1.582,a31002-Flag=N;a31005-Avg=0.567,a31005-Flag=N;a24072-Avg=0.0,a24072-Flag=N;a31004-Avg=0.101,a31004-Flag=N;a31003-Avg=0.123,a31003-Flag=N;a31024-Avg=2.762,a31024-Flag=N;a28006-Avg=0.008,a28006-Flag=N;a31015-Avg=0.009,a31015-Flag=N;a31010-Avg=0.0,a31010-Flag=N;a31009-Avg=0.001,a31009-Flag=N;a30008-Avg=0.045,a30008-Flag=N;a29026-Avg=0.0,a29026-Flag=N;a29017-Avg=0.111,a29017-Flag=N;a31025-Avg=0.117,a31025-Flag=N;a25072-Avg=0.012,a25072-Flag=N;a29015-Avg=0.002,a29015-Flag=N;a31030-Avg=0.0,a31030-Flag=N;a31027-Avg=0.005,a31027-Flag=N;a31016-Avg=0.017,a31016-Flag=N;a31018-Avg=0.02,a31018-Flag=N;a31020-Avg=0.0,a31020-Flag=N;a99051-Avg=0.057,a99051-Flag=N&&1980

 

代码:

import re
import socket
import sqlite3
import datetime
import threading
import time
from AnalysisHJ212 import WRITE_SQ
def handle():
    socket.setdefaulttimeout(30)
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    tcp_socket.bind(("127.0.0.1",8001))
    tcp_socket.listen(10)
    while True:
        try:
            client, addr = tcp_socket.accept()
            break_flag = False
            while break_flag == False :
                try:
                    DData = b''
                    while break_flag == False:
                        data = client.recv(1024)
                        if not data:
                            # 如果数据为空,说明客户端关闭
                            # print('跳出循环')
                            break_flag = True
                            client.close()
                            break
                        else:
                            GET = str(data.decode("utf8", "ignore"))
                            # if GET[0:2]=="##":
                            #     # print(GET[0:2])
                            #     LEN_DATA=int(GET[2:6])

                            DData += data
                            if str(DData.decode("utf8", "ignore"))[0:2]!="##":
                                client.close()
                                break_flag = True
                                break
                            if DData.endswith(b'\r\n'):
                                DATA_GET = str(DData.decode("utf8", "ignore"))  # 返回报文
                                print(DATA_GET)
                            # if len(str(DData.decode("utf8", "ignore"))[6:-6])==LEN_DATA and DData.endswith(b'\r\n'):
                            #     # print("接收完毕")
                            #     DATA_GET = str(DData.decode("utf8", "ignore"))  # 返回报文
                            #     Send_Data(GET_client=client, GET_ST_ans=ST_ans)
                                break
                except Exception as e:
                    # print("异常1", e)
                    client.close()
                    pass
                    break_flag = True
        except Exception as e:
            pass
socket.socket.handle = handle
handle()

 

...全文
成就一亿技术人!
拼手气红包 30.00元
531 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

11,999

社区成员

发帖
与我相关
我的任务
社区描述
创建由Python学习者和社区专家组成的国内最大的第三方Python中文社区,帮助社区成员更好地入门学习、职业成长和应用实践
python学习 企业社区
社区管理员
  • Python全栈技术社区
  • Lumos_zbj
  • 北侠大卫
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

创建由Python学习者和社区专家组成的国内最大的第三方Python中文社区,帮助社区成员更好地入门学习、职业成长和应用实践

  • 这里有最新最全的 Python 学习内容及资源,每月多达4次技术公开课
  • 这里有众多 Python 学习者,陪伴你一起交流成长
  • 这里有专业 Python 社区专家、讲师,帮助你跨越学习瓶颈,解决实操难题
  • 这里有丰富的社区活动,可以开阔眼界,结识更多同伴

【最新活动】:

  1. 周四技术公开课讲师招募中,点击查看详情
  2. “Python 社区专家团” 招募中,点击查看详情

 

试试用AI创作助手写篇文章吧