UDP Socket Daten auslesen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
CookieSoft
User
Beiträge: 17
Registriert: Sonntag 13. Mai 2012, 18:58

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!
"Don't be evil" - Google™
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Das struct-Modul ist in diesem Fall dein Freund.
Das Leben ist wie ein Tennisball.
CookieSoft
User
Beiträge: 17
Registriert: Sonntag 13. Mai 2012, 18:58

ok cool ich werde es mal probieren! Dankeschön
"Don't be evil" - Google™
CookieSoft
User
Beiträge: 17
Registriert: Sonntag 13. Mai 2012, 18:58

hat jemand vielleicht ein Beispiel für diesen Fall ich komme mit den Referenz Beispielen nicht richtig zurecht :oops:
"Don't be evil" - Google™
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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
the more they change the more they stay the same
CookieSoft
User
Beiträge: 17
Registriert: Sonntag 13. Mai 2012, 18:58

Cool danke
"Don't be evil" - Google™
Antworten