更新缓存重发函数逻辑

This commit is contained in:
murmur 2023-03-13 10:11:29 +08:00
parent 953975dd3b
commit f5e5357547

View File

@ -110,19 +110,28 @@ def tt_hh(addr, data):
# 从缓存中匹配数据并重发 # 从缓存中匹配数据并重发
# 仅有新终端上线时才重发 # 仅有新终端上线时才重发
if ccid in cache: if ccid in cache:
msgs = cache[ccid] msgs = cache[ccid][:] # 浅拷贝
sccid=msgs[0][7 + offs : 11 + offs].decode()
print("",len(msgs),"包缓存数据待发源ccid",sccid)
for i in range(len(msgs)): for i in range(len(msgs)):
try: try:
# 按缓存先后顺序发送 # 按缓存先后顺序发送
addr.send(msgs[i]) addr.send(msgs[i])
cache[ccid].pop(0)
print("",i+1,"包缓存数据发送完成。")
except: except:
# 异常时退出循环不用再尝试发送后续msgs # 异常时退出循环不用再尝试发送后续msgs
# 退出前清空已发送成功的缓存数据 # 退出前清空已发送成功的缓存数据
# del方法会改变list大小 # del方法会改变list大小
while i: # while i:
cache[ccid].pop(0) # cache[ccid].pop(0)
i = i - 1 # i = i - 1
print("",i+1,"包发送失败,停止尝试")
break break
if cache[ccid] == []:
print("缓存数据发送完成源ccid",sccid)
del cache[ccid]
save_cache(cache)
return 0 return 0
@ -206,7 +215,7 @@ def tt_decode(addr, data):
class MyServer(socketserver.BaseRequestHandler): class MyServer(socketserver.BaseRequestHandler):
def handle(self): # 回调 def handle(self): # 回调
print("终端已上线:", self.client_address) print("终端", self.client_address,"已上线,等待上报心跳。")
conn = self.request conn = self.request
# print(type(conn),conn.fd) # print(type(conn),conn.fd)