使用black格式化
This commit is contained in:
parent
0212f884c6
commit
ac02bc50db
67
server.py
67
server.py
@ -5,7 +5,6 @@ import subprocess
|
||||
import pickle
|
||||
|
||||
|
||||
|
||||
offs = 0 # 偏移量
|
||||
p = {}
|
||||
# 保存终端信息,ccid与地址对
|
||||
@ -14,34 +13,37 @@ p ={}
|
||||
pp = {}
|
||||
# cache={}
|
||||
from collections import defaultdict
|
||||
|
||||
cache = defaultdict(list)
|
||||
|
||||
|
||||
def save_cache(dic):
|
||||
'''缓存未发送成功的消息
|
||||
仅在未发送成功时缓存'''
|
||||
"""缓存未发送成功的消息
|
||||
仅在未发送成功时缓存"""
|
||||
|
||||
# f=open("./cache.txt",mode='w+')
|
||||
# f.write(str(dic))
|
||||
# f.close
|
||||
pickle.dump(dic,open("./cache.txt",'wb'))
|
||||
pickle.dump(dic, open("./cache.txt", "wb"))
|
||||
|
||||
|
||||
def load_cache():
|
||||
'''程序启动时加载缓存'''
|
||||
"""程序启动时加载缓存"""
|
||||
try:
|
||||
# f=open("./cache.txt")
|
||||
# c = eval(f.read())
|
||||
# f.close()
|
||||
c=pickle.load(open("./cache.txt",'rb'))
|
||||
c = pickle.load(open("./cache.txt", "rb"))
|
||||
return c
|
||||
except:
|
||||
return None
|
||||
|
||||
|
||||
def update_pairs(addr, ccid, clear=0):
|
||||
'''更新终端库
|
||||
"""更新终端库
|
||||
addr:绑定tcp地址
|
||||
ccid:终端号
|
||||
clear:清空掉线终端'''
|
||||
clear:清空掉线终端"""
|
||||
|
||||
if ccid and not clear:
|
||||
# 添加或更新客户端
|
||||
@ -57,8 +59,9 @@ def update_pairs(addr,ccid,clear=0):
|
||||
# for i in pp:
|
||||
# print(i,"-",pp[i])
|
||||
|
||||
|
||||
def get_addr(ccid):
|
||||
'''获取ccid对应的地址'''
|
||||
"""获取ccid对应的地址"""
|
||||
|
||||
try:
|
||||
# 如果有直接返回
|
||||
@ -67,6 +70,7 @@ def get_addr(ccid):
|
||||
# 没有就返回None
|
||||
return None
|
||||
|
||||
|
||||
def get_ccid(addr):
|
||||
try:
|
||||
# 如果有直接返回
|
||||
@ -75,7 +79,8 @@ def get_ccid(addr):
|
||||
# 没有就返回None
|
||||
return None
|
||||
|
||||
'''
|
||||
|
||||
"""
|
||||
+--------+--------------+----------+----------+--------------+------------------------+--------+
|
||||
| ff | 长度 | 地址信息 | 信令 | 内容 | 校验位 |
|
||||
+--------+--------------+----------+----------+--------------+------------------------+--------+
|
||||
@ -83,7 +88,8 @@ def get_ccid(addr):
|
||||
+ $TTMS +--------------+----------+----------+--------------+------------------------+--------+
|
||||
| | 2Bytes | 4Bytes | 传输数据 | 0xaa | 载荷 | 2Bytes |
|
||||
+--------+--------------+----------+----------+--------------+------------------------+--------+
|
||||
'''
|
||||
"""
|
||||
|
||||
|
||||
def send(fd, data):
|
||||
try:
|
||||
@ -92,8 +98,9 @@ def send(fd,data):
|
||||
except:
|
||||
return -1
|
||||
|
||||
|
||||
def tt_hh(addr, data):
|
||||
'''处理心跳'''
|
||||
"""处理心跳"""
|
||||
|
||||
# 更新pairs
|
||||
ccid = data[7 + offs : 11 + offs]
|
||||
@ -112,22 +119,22 @@ def tt_hh(addr,data):
|
||||
# 异常时退出循环,不用再尝试发送后续msgs
|
||||
# 退出前清空已发送成功的缓存数据
|
||||
# del方法会改变list大小
|
||||
while(i):
|
||||
while i:
|
||||
cache[ccid].pop(0)
|
||||
i = i - 1
|
||||
break
|
||||
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
def tt_trans(addr, data):
|
||||
'''发送数据到指定ccid'''
|
||||
"""发送数据到指定ccid"""
|
||||
|
||||
tccid = data[7 + offs : 11 + offs]
|
||||
taddr = get_addr(tccid)
|
||||
# 组帧
|
||||
msg = bytearray(data[:])
|
||||
msg[:5]=b'$TTMX'
|
||||
msg[:5] = b"$TTMX"
|
||||
msg[7 + offs : 11 + offs] = get_ccid(addr)
|
||||
|
||||
# 计算校验和
|
||||
@ -148,7 +155,6 @@ def tt_trans(addr,data):
|
||||
return 0
|
||||
print("匹配终端:", tccid, "<--->", taddr)
|
||||
|
||||
|
||||
# 发送
|
||||
try:
|
||||
taddr.send(msg)
|
||||
@ -165,34 +171,32 @@ def tt_trans(addr,data):
|
||||
print("发送失败,终端可能已掉线。", taddr)
|
||||
return 0
|
||||
|
||||
|
||||
def err_handle(flag, addr):
|
||||
'''错误处理
|
||||
"""错误处理
|
||||
|
||||
默认打印错误信息
|
||||
|
||||
1-非法连接,关闭连接
|
||||
'''
|
||||
"""
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
|
||||
def tt_decode(addr, data):
|
||||
'''处理收到的数据
|
||||
"""处理收到的数据
|
||||
数据正常返回0
|
||||
数据异常返回-1'''
|
||||
数据异常返回-1"""
|
||||
|
||||
|
||||
if data[:5] != b'$TTMS' or len(data) <12 or len(data)>200:
|
||||
if data[:5] != b"$TTMS" or len(data) < 12 or len(data) > 200:
|
||||
# 数据长度不可能小于12,考虑非法接入的可能,主动断开连接
|
||||
return -1
|
||||
|
||||
|
||||
cmd = data[11 + offs]
|
||||
if cmd == 0x01:
|
||||
# 处理心跳
|
||||
tt_hh(addr, data)
|
||||
elif cmd==0xaa:
|
||||
elif cmd == 0xAA:
|
||||
# 处理数据
|
||||
tt_trans(addr, data)
|
||||
else:
|
||||
@ -210,7 +214,9 @@ class MyServer(socketserver.BaseRequestHandler):
|
||||
# update_pairs(conn,data[7+offs:11+offs])
|
||||
if not data:
|
||||
break
|
||||
print ("接收到新数据",self.client_address,",长度",len(data),":\r\n", data.hex(" "))
|
||||
print(
|
||||
"接收到新数据", self.client_address, ",长度", len(data), ":\r\n", data.hex(" ")
|
||||
)
|
||||
# ack_msg = "got from "+ str(ip) + " to " + str(self.client_address) + data
|
||||
# conn.send(data[:6])
|
||||
if tt_decode(conn, data):
|
||||
@ -219,14 +225,11 @@ class MyServer(socketserver.BaseRequestHandler):
|
||||
break
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if __name__ == "__main__":
|
||||
# load_cache
|
||||
cache = load_cache()
|
||||
|
||||
server = socketserver.ThreadingTCPServer(('localhost',8005), MyServer)
|
||||
server = socketserver.ThreadingTCPServer(("localhost", 8005), MyServer)
|
||||
ip, port = server.server_address
|
||||
print("服务端已建立:", ip, port)
|
||||
server.serve_forever()
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user