From f356b16e3fe29364ad7e2710ccc0564d90f03ea4 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 03 二月 2026 21:12:02 +0800
Subject: [PATCH] 468 游戏事件记录服务器-py版本
---
ServerPython/EventServerPY/server.py | 24 ++++++------------------
1 files changed, 6 insertions(+), 18 deletions(-)
diff --git a/ServerPython/EventServerPY/server.py b/ServerPython/EventServerPY/server.py
index 6bf9eb8..1643324 100644
--- a/ServerPython/EventServerPY/server.py
+++ b/ServerPython/EventServerPY/server.py
@@ -29,7 +29,6 @@
self.running = True
self.recv_buffer = ''
self.lock = threading.Lock()
- self.consecutive_discards = 0 # 连续丢弃计数器
# 创建接收线程
self.recv_thread = threading.Thread(target=self._recv_loop)
@@ -68,10 +67,6 @@
print('[Connection] Error: %s' % str(e))
break
- # 检查是否因大量无效包需要关闭
- if self.consecutive_discards > 1000:
- print('[Connection] Too many invalid packets, closing connection %d' % self.cid)
-
self.close()
def _try_parse_packet(self):
@@ -89,13 +84,9 @@
# 检查 MagicCode (FF CC)
magic_code = struct.unpack('<H', self.recv_buffer[0:2])[0]
if magic_code != PACKET_HEADER_MC:
- # 丢弃第一个字节,继续尝试
- self.consecutive_discards += 1
- if self.consecutive_discards > 1000:
- packet_logger.log_text('Too many invalid packets, closing connection', 'ERROR')
- return False
- packet_logger.log_text('Invalid magic code: 0x%04X, discard byte (count: %d)' % (magic_code, self.consecutive_discards), 'WARN')
- self.recv_buffer = self.recv_buffer[1:]
+ # 整个缓冲区数据无效,清空等待新数据
+ packet_logger.log_text('Invalid magic code: 0x%04X, clear buffer data: %s' % (magic_code, self.recv_buffer), 'WARN')
+ self.recv_buffer = ''
return False
# 读取包长度(不包含PacketHeader本身)
@@ -103,9 +94,9 @@
# 检查包长度是否合理
if packet_len > MAX_PACKET_LEN:
- self.consecutive_discards += 1
- packet_logger.log_text('Packet length %d exceeds max %d, discard byte (count: %d)' % (packet_len, MAX_PACKET_LEN, self.consecutive_discards), 'WARN')
- self.recv_buffer = self.recv_buffer[1:]
+ # 整个缓冲区数据无效,清空等待新数据
+ packet_logger.log_text('Packet length %d exceeds max %d, clear buffer. Buffer data: %s' % (packet_len, MAX_PACKET_LEN, self.recv_buffer), 'WARN')
+ self.recv_buffer = ''
return False
# 计算总长度(包含PacketHeader)
@@ -118,9 +109,6 @@
# 提取协议数据(跳过4字节PacketHeader,只传Cmd/SubCmd及之后的数据)
packet_data = self.recv_buffer[PACKET_HEADER_SIZE:total_len]
self.recv_buffer = self.recv_buffer[total_len:]
-
- # 重置丢弃计数器
- self.consecutive_discards = 0
# 交给包处理器处理
self.packet_processor.add_packet(self.cid, packet_data)
--
Gitblit v1.8.0