Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

moritz31

Treue Seele

  • »moritz31« ist der Autor dieses Themas

Beiträge: 259

Wohnort: Hessen

Beruf: Student

  • Private Nachricht senden

1

18.12.2012, 16:53

C++ Unzip .zip

Hey Leute,

ich schreib mir gerade so aus lust und laune heraus einen universellen miniupdater, den ich später dann in meine ganzen projekte einbauen kann.

Das ganze ist eigentlich momentan noch recht simpel aufgebaut :

Im Projekt ist immer eine Datei mit der aktuellen Versionsnummer. Ich greif aufn Server zu lad mir da die Versionsdatei runter lese beide aus und guck ob es unterschiede gibt :)
Wenn nun die Version vom Server aktueller is , dann soll er die Daten , die in nem Versionsordner sind runterladen. Um mir das einfacher zu machen dachte ich mir ich nehm ne .Zip lad die runter
und entpack die dann einfach. Leichter gesagt als getan, hab jetzt schon einiges von Zlib und so gelesen aber ich hab bis jetzt nix kapiert ....

kann mir das vllt einer erklären ?

lg moritz31

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

18.12.2012, 21:23

Dein Ansatz ist je nach Situation auch nur bedingt geeignet. Wenn du nur wenige Dateien hast, dann ist es vollkommen i.O. das komplett neu runterzuladen. Anderen Falls müsstest du für jede mögliche "Versionskombination" ein entsprechendes Archiv bereithalten. I.A. wird daher alle vorhandenen Dateien gehasht (erstes Stichwort für die Suche: hashing) und aus den ganzen hashs wiederum ein Gesamthash berechnet. Dieser wird beim jedem "login" mit dem Server abgeglichen. Wenn Server und Client den gleichen Hash haben, dann haben sie auch die gleichen Dateien. Falls nicht, wird die Liste aller Dateihashes ausgetauscht und abgeglichen. Darüber weiß man dann welche Dateien fehlen, zuviel sind oder sich geändert haben. Man muss dann nur noch die entsprechenden Aktualsierungen pro Datei durchführen.
Das Herrunterladen ansich kann man z.B. mit http oder ftp recht einfach realisieren (Stichwort für C/C++: curl).
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

19.12.2012, 14:28

@Nox: Ich glaube, es geht ihm um den Zip-Part!

Ich hatte da mal ein Tutorial geschrieben. Ich glaube aber, dass es irgendwo im digitalen Nirvana verschwunden ist.
Jedenfalls gibt es bei der zlib im "contrib"-Ordner etwas namens "minizip". Dort findest du Funktionen, um relativ komfortabel Dateien in Zip-Dateien zu lesen (und zu schreiben, auch mit Verschlüsselung). Schau's dir mal an ...

Thoran

Alter Hase

Beiträge: 520

Wohnort: Stuttgart

Beruf: Senior Software Engineer

  • Private Nachricht senden

4

19.12.2012, 14:47

Evtl. magst du auch mal die 7zip Bibliothek anschauen, da man mit 7zip erheblich bessere Kompressionsraten hinbekommt und auch auf mehr Formate zurückgreifen kann.
Mein Entwicklertagebuch
Aktuelles Projekt: Universum Espionage
Eingestellt:Spieleengine SilverCore
Organisator "Spieleentwickler Stammtisch Stuttgart"

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

19.12.2012, 18:31

@David das ist mir schon bewusst, aber wenn jemand versucht nen Bild aufzuhängen, aber nach einem Schraubenzieher fragt, neige ich dazu ihm doch eher Hammer und Nagel ans Herz zu legen, weil das meist doch die bessere Wahl ist :) (gibt natürlich Ausnahmefälle; wie bereits erwähnt ist sein Ansatz natürlich gut für lange Updatezyklen/wenige Dateien).
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Werbeanzeige