Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
(MC) Zlib komprimierte Packets lesen
thexbasic
myCSharp.de - Member



Dabei seit:
Beiträge: 8
Herkunft: NRW

Themenstarter:

(MC) Zlib komprimierte Packets lesen

beantworten | zitieren | melden

Hallo Forum,

zuletzt hatte ich mich mit dem Spiel Minecraft auseinandergesetzt und dafür einen Chat-Client in der Konsole geschrieben, wobei ein Spieler emuliert wird & sich auf einen Server verbindet.
Das klappte soweit ganz gut, selbst die AES-Verschlüsselung hab ich mit einiger Hilfe eines Freundes zum laufen bekommen.
Bisher hat das ganze 1A funktioniert.. nun aber mit der Version 1.8 kam die packet-compression hinzu.
Belesen wie das ganze funktioniert habe ich mich auch schon: HIER und HIER.

Nun zu meinem Problem...
Sobald Packet 0x03 mit dem Threshhold einmal eingetroffen ist, werden ausgehende Packets bereits mit der DotNetZipLib-DevKit-v1.9 komprimiert.
Allerdings weiss ich nicht, wie ich das empfangen umsetzen könnte, da das Packet Stückchenweise gelesen wird, aber im ganzen komprimiert ist..

Ich packe in den Anhang mal meine derzeitige Player-Class mit Utils und hoffe, dass mir jemand aushelfen kann (Jeder Tipp ist willkommen :P).

Danke im Vorraus,
MfG. Basic

Moderationshinweis von MrSparkle (19.05.2015 - 18:55)

Angehängtes Projekt entfernt.

Bitte beachte [Hinweis] Wie poste ich richtig?, Punkt 4.1: Bitte keine kompletten Projekte posten

private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5.649
Herkunft: Leipzig

beantworten | zitieren | melden

Hi thexbasic,

es ist nicht der Sinn dieses Forums, hier einfach ein komplettes Projekt zu posten und andere den Fehler suchen zu lassen. Du kannst dein Problem auch beschreiben und evtl. mit einem kurzen Codeausschnitt veranschaulichen.

Wenn du allerdings davon ausgehst, daß sich jeder hier mit der Minecraft-API auskennt, wirst du wahrscheinlich wenig Erfolg haben.

Christian
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
thexbasic
myCSharp.de - Member



Dabei seit:
Beiträge: 8
Herkunft: NRW

Themenstarter:

beantworten | zitieren | melden

Hi MrSparkle,

Nun ja das Problem zu beschreiben habe ich grob versucht (einen stream beim lesen zu decompressen).. allerdings könnten Randbedingungen ja sein, dass es auch sein kann, dass NetworkStream verschlüsselt ist und daher über den AesStream gelesen werden muss (kenne mich da wie gesagt noch nicht so aus), von daher dachte ich wäre es einfacher wenn man sich selbst einen Überblick verschaffen kann, anstatt die Methoden alle einzeln und zusammenhanglos zu kopieren..

Im Prinzip hat das Problem auch nicht viel mit der Minecraft-Api, sondern wie geschrieben, lesen von streams zutun... Dazu kommt, wenn man sich in Minecraft (kinder?)-foren umschaut geht es größtenteils auch um Java, nicht C#.. Was auch zum letzten Punkt führt; Da ich selber am Ende mit meinem Spanisch bin dachte ich, frage ich lieber in einem Fach-Forum.
private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1.346

beantworten | zitieren | melden

Hallo thexbasic,

Ich habe mich vor einiger Zeit lange damit beschäftigt und eine Bibliothek geschrieben, die mit dem Minecraft Protokoll umgeht. Das ganze ist aber leider aktuell veraltet(der letzte Commit ist knapp 1.5 Jahre alt), aber vielleicht hilft es dir weiter.

Bibliothek

Sich darauf zu verlassen, dass Packete am Stück ankommen ist generell keine gute Idee, Ich habe damals eine Abstraktionsschicht über den Netzwerkstream geschrieben, welcher mir sicherstellt, dass immer so viel gelesen wird, wie ich erwarte.

Das findest du hier.

Lieben Gruß,
pdelvo
private Nachricht | Beiträge des Benutzers
weismat
myCSharp.de - Member



Dabei seit:
Beiträge: 872
Herkunft: Frankfurt am Main

beantworten | zitieren | melden

Die ZLib bezieht sich auf einen komprimierten Stream - im Gegensatz zum Zip File Format, auf das sich die meisten Beispiele beziehen und das einen Stream mit einem zusätzlichen Header darstellt.
Hast Du es schon mal mit ZLibStream.Klasse probiert? Das sollte problemlos funktionieren.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von weismat am .
private Nachricht | Beiträge des Benutzers
thexbasic
myCSharp.de - Member



Dabei seit:
Beiträge: 8
Herkunft: NRW

Themenstarter:

beantworten | zitieren | melden

Hi pdelvo,
habe mir mal deine lib angeguckt, soweit ganz nett, allerdings - da ich ja eigentlich nur einen Chat schreiben wollte - ist das schon fast zu umfangreich :D aber danke

Und auch danke weismat, das mit der Stream-Klasse ist vollkommen an mir vorbei gegangen.. Habe jetzt aber eine grobe Idee und werde etwas rumprobieren.

MfG. Basic

Edit (2):

Hab es gelöst... Wer Interesse an dem fertigen Projekt hat kann sich per PM melden :)
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von thexbasic am .
private Nachricht | Beiträge des Benutzers