构建一个数据包发送到minecraft服务器 - python

时间:2013-05-04 20:59:06

标签: python minecraft

我已经尝试了几个小时(字面意思)将数据包发送到Minecraft服务器。 http://www.minecraftwiki.net/wiki/Classic_Server_Protocol#Packet_Protocol (玩家识别位)。 但我收到错误'struct.error:'s'的参数必须是一个字节对象'。 这是代码: packet = struct.pack('bb8s110sb', 0, 7, username, verification_key, 0) # packet type s.send(packet)

如何成功将播放器识别包发送到服务器?

非常感谢任何帮助,我将无法在发布此帖后至少12小时内回复任何答案。 + Rep代表任何帮助,谢谢:)

1 个答案:

答案 0 :(得分:0)

struct的pack函数要求username和verification_key是字节对象。

在python 3中定义类似字符串'asdf'时,它使用unicode进行编码。为了支持许多编码,python具有byte对象。要将字符串转换为字节对象,只需使用所需的编码作为参数调用其编码方法。在这种情况下,'ascii'将适用于您的两个变量,

packet = struct.pack('bb8s110sb',0,7,username.encode('ascii'),verification_key.encode('ascii'),0)

应该解决你的问题。