2013-11-01 2 views
3

코드가 마침내 작동합니다. 지금 당장 플레이어를 옮기려고합니다.Python - Minecraft Classic 서버와 상호 작용

import socket 
s = socket.socket() 
KEY = "key" 
USERNAME = "Vik2015" 
HOST = "68.53.14.13" 
PORT = 25566 
s.connect((HOST, PORT)) 
START_LOGIN = chr(0x00)   # Start login packet 
PROTOCOL = chr(0x07)   # Send protocol version 
USERNAME = "%-64s"%USERNAME # Username 
VERKEY  = "%-64s"%KEY  # Verification key 
UNUSED  = chr(0x00)   # Unused byte 

PACKET = START_LOGIN + PROTOCOL + USERNAME + VERKEY + UNUSED 
s.sendall(PACKET) 

print s.recv(4096) 
s.close() 
+0

나는 당신이 기대하는 것이 무엇인지 알아보기 위해서는 트래픽을 스니핑 한 것 같은데요? – cmd

+0

@cmd, 시도했지만 아무런 결과도 얻지 못했습니다. 지금 http://minecraft.gamepedia.com/Classic_server_protocol을 사용하고 있습니다. – JadedTuna

+0

USERNAME 및 VERKEY를 공백이있는 64 자로 채우십시오. 당신이 링크 한 문서는 문자열이 공백으로 채워진 64 문자 ASCII 여야한다는 것을 지정합니다. 또한 UNUSED 바이트를 보내야합니다. 사양에 따라 –

답변

2

함께 의견을 퍼팅, 여기 당신은 무엇을 얻을 것 :

import socket 
s = socket.socket() 
KEY = "ce73007bb263c20268da59eb9fb52b06" # If you want to help me, you can use this key to connect to the server 
USERNAME = "Vik2015" 
HOST = "68.53.14.13" 
PORT = 25566 
s.connect((HOST, PORT)) 
print 'connected' 
# login packet (pkt id, protocol version, user name, verification key, pad) 
s.sendall('%c%c%-64s%-64s%c' % (0, 7, USERNAME, KEY, 0)) 
print 'sentall' 
print s.recv(4096) 
s.close() 
+0

안녕하십니까, 늦어서 죄송합니다. 어떻게 '키'를 얻으 셨는지 알 수 있습니까? –