Seite 1 von 1
UDP Socket Daten auslesen
Verfasst: Donnerstag 28. Juni 2012, 18:29
von CookieSoft
Hey, ich schau mir grad das Minecraft Pocket Edition Protokoll an (
http://wiki.vg/Pocket_Minecraft_Protocol)
So ich hab nen server aufgesetzt(und getestet):
Code: Alles auswählen
import socket
ip = "192.168.137.1"
port = 19132
server = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
server.bind((ip, port))
while True:
data = server.recv( 1024 )
So jetzt steht auf wiki.vg "int8 = 0x02 (packet type ID) " wie kann ich die Daten nun auslesen also das ich kein "☻
\ò ■■■■²²²²↕4Vx" als Output kriege

Vielen Dank für Antworten!
Re: UDP Socket Daten auslesen
Verfasst: Donnerstag 28. Juni 2012, 18:41
von EyDu
Hallo.
Das struct-Modul ist in diesem Fall dein Freund.
Re: UDP Socket Daten auslesen
Verfasst: Donnerstag 28. Juni 2012, 18:50
von CookieSoft
ok cool ich werde es mal probieren! Dankeschön
Re: UDP Socket Daten auslesen
Verfasst: Donnerstag 28. Juni 2012, 18:55
von CookieSoft
hat jemand vielleicht ein Beispiel für diesen Fall ich komme mit den Referenz Beispielen nicht richtig zurecht

Re: UDP Socket Daten auslesen
Verfasst: Donnerstag 28. Juni 2012, 19:13
von Dav1d
Blöd nur, dass das TCP und nicht UDP ist

.
Ein Byte lesen und je nach ID parsen:
Code: Alles auswählen
packet_id = struct.unpack('>b', buffer.read(1))
dispatch(packet_id)
Wichtig, strings sind UCS2 und alles ist Big-Endian.
Edit: Es gibt da schon eine Python-Implementation, wie gut die ist, weiß ich nicht, sieht aber recht brauchbar aus. Letzter Commit war vor zwei Monaten, also wird es wohl nicht mit den Snapshots funktionieren, aber wahrscheinlich mit 1.2.5:
https://github.com/barneygale/barneymc
Re: UDP Socket Daten auslesen
Verfasst: Freitag 29. Juni 2012, 12:15
von CookieSoft
Cool danke