Python Class + Packet混乱

时间:2012-07-04 03:53:08

标签: python sockets client python-2.7 minecraft

我已经开始了一个项目来编写一个基于python的minecraft客户端/ bot来连接到标准的Minecraft服务器。我正在使用名为py-mine-client的库来执行数据包处理。我一直无法使用库接收数据包 - 我不知道要调用哪些函数/可以访问接收数据的位置。主要问题是弄清楚如何接收握手响应。我以为我可以使用client.recievePacket函数访问它,但它似乎没有工作。

这是我的代码:

import sys
import string
from client import *

def main():
    client = Client("192.168.1.15")
    client.connect()
    client.handshake("MyUsername")
    handshake = string16("\x02")
    client.recieve_packet(handshake)
    client.login_request("MyUsername")
    client.listener.stop()

if __name__ == "__main__":
    sys.exit(main())

这是一个wiki,其中包含协议如何工作的信息:
http://wiki.vg/Protocol

1 个答案:

答案 0 :(得分:0)

查看库source code,它们有一个Listener类,自动收集单独线程中的所有数据包。然后,用户不应调用receive_packet方法(侦听器使用它来报告新的传入数据)。所有数据包都附加到您可以访问的client.packets数组。不幸的是,该库似乎不是线程安全的(可能依赖于全局锁),并且它们似乎有许多与套接字相关的错误。

由于库看起来非常简单,您可能只想重写它。