【问题标题】:Python Class + Packet confusionPython 类 + 数据包混淆
【发布时间】:2012-07-04 03:53:07
【问题描述】:

我已经开始了一个项目来编写一个基于 python 的 minecraft 客户端/机器人来连接到标准的 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

【问题讨论】:

    标签: python sockets client python-2.7 minecraft


    【解决方案1】:

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

    由于这个库看起来很简单,你可能只想重写它。

    【讨论】:

      猜你喜欢
      • 2011-02-01
      • 1970-01-01
      • 2015-03-03
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      • 2013-05-23
      • 2017-08-14
      相关资源
      最近更新 更多