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 :D 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 :oops:

Re: UDP Socket Daten auslesen

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

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