服务器在收到 1 个数据包字符串时断开客户端连接,但没有接收到另一个数据包字符串
Server disconnecting client when receiving 1 packet string, but not another
我 运行 在开发的多人在线游戏中遇到了一个奇怪的问题。
当用户点击客户端上的 "Accept Quest" 时,它会执行以下操作:
packet = "A:io-QS#"
tcpClient.send(packet.encode('utf-8'))
在服务器上,为每个处理 sending/receiving 数据的客户端创建了一个线程:
while (client[self.id].authenticated == True):
try:
data = (self.connection.recv(1024)).decode('utf-8')
client[self.id].lastPacketTime = time.time()
client[self.id].processData(data)
except:
print("Client disconnected due to data receive error")
client[self.id].saveDataToDatabase()
client[self.id].authenticated = False
client[self.id].loggedIn = False
如果服务器收到数据包"A:io-QS#",它会抛出异常并断开客户端。我修改了提到的客户端代码aboe发送数据包"M:w#"(定向移动数据包)并且它没有抛出异常,
仅当数据包为 "A:io-QS#" 时。
数据包大小不是问题(包含登录凭据的更大数据包可以很好地通过此服务器循环)。
我尝试注释掉 "client[self.id].processData(data)" 行,但异常仍然发生(但仅针对数据包 'A:io-QS#')。
服务端在接收到数据后,处理数据前抛出异常,所以不是逻辑错误。
我有点不知所措,有人看到我遗漏了什么或者对我如何进一步测试这个问题有任何建议吗?
谢谢!
我建议在服务器的 except 块中使用 sys.exc_info() 来查找有关异常的更多信息。
我 运行 在开发的多人在线游戏中遇到了一个奇怪的问题。
当用户点击客户端上的 "Accept Quest" 时,它会执行以下操作:
packet = "A:io-QS#"
tcpClient.send(packet.encode('utf-8'))
在服务器上,为每个处理 sending/receiving 数据的客户端创建了一个线程:
while (client[self.id].authenticated == True):
try:
data = (self.connection.recv(1024)).decode('utf-8')
client[self.id].lastPacketTime = time.time()
client[self.id].processData(data)
except:
print("Client disconnected due to data receive error")
client[self.id].saveDataToDatabase()
client[self.id].authenticated = False
client[self.id].loggedIn = False
如果服务器收到数据包"A:io-QS#",它会抛出异常并断开客户端。我修改了提到的客户端代码aboe发送数据包"M:w#"(定向移动数据包)并且它没有抛出异常,
仅当数据包为 "A:io-QS#" 时。
数据包大小不是问题(包含登录凭据的更大数据包可以很好地通过此服务器循环)。
我尝试注释掉 "client[self.id].processData(data)" 行,但异常仍然发生(但仅针对数据包 'A:io-QS#')。
服务端在接收到数据后,处理数据前抛出异常,所以不是逻辑错误。
我有点不知所措,有人看到我遗漏了什么或者对我如何进一步测试这个问题有任何建议吗?
谢谢!
我建议在服务器的 except 块中使用 sys.exc_info() 来查找有关异常的更多信息。