2012-07-04 124 views
0

我已經開始編寫一個基於python的minecraft客戶機/機器人程序來連接到標準的Minecraft服務器。我正在使用名爲py-mine-client的庫來執行數據包處理。我一直在使用庫接收數據包時遇到問題 - 我不知道要調用哪些函數/可以訪問哪些接收數據。主要問題是弄清楚如何接收握手響應。我以爲我可以通過client.recievePacket函數訪問它,但它似乎沒有工作。

這裏是我的代碼:Python類+數據包混淆

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()) 

這裏是關於協議如何與信息維基:
http://wiki.vg/Protocol

回答

0

縱觀圖書館source code,他們有一個Listener類收集的所有數據包自動分離線程。 receive_packet方法不應該由用戶調用(它被偵聽器用來報告新的傳入數據)。所有數據包都附加到您可以訪問的client.packets陣列。不幸的是,這個庫似乎不是線程安全的(可能依賴於全局鎖),它們似乎有許多與套接字相關的錯誤。

由於圖書館看起來很簡單,您可能只想重寫它。