Hallo,
Ich habe einen Sachverhalt den ich nicht ganz verstehe. Ich habe ein Programm, das Dateien im Netzwerk über einen Server an Clients sendet. Also ein Client sendet an alle oder nur einen anderen Client. Dabei wird die Datei Base64 codiert und in ein ByteArray umgewandelt das dann über einen NetworkStream an den Server gesendet (speichert sich die Datei auch in ein Verzeichnis) der die Datei weiter sendet. Der Empfänger decodiert und Speichert die Datei fertig. Das klappt alles wunderbar. Nur ZIP Dateien die Ich sende Brauchen elendig lange. Gleichgroße EXEn, Bilder, Text- oder 7z Dateien gehen mehr als doppelt so schnell.
Kann mir jemand sagen woran das liegt?
Bittedankeschön
Edit: Ich habe es nochmal geprüft, ein ordner 27 MB gezippt braucht 12 Minuten, der Ordner als .7z Datei 16 Sekunden und Exe, Bild, und DLL gleicher Größe auch je maximal 22 Sek
Kommt ein Mann in die Wirtschaft und sagt zum Wirt: 16 Bit!
Sagt der Wirt: Das ist ein Wort!
Hallo thetruedon,
da bisher sonst niemand geantwortet hat, komm ich mal mit meinem unvorhandenen Wissen. Probier mal aus:
Gruß, Alf
Hallo,
wieso überhaupt der Umweg mit Base64 codieren, wenn du die Daten als Bytearray verschickst?
Baka wa shinanakya naoranai.
Mein XING Profil.
Ich habe Ausgemacht, dass es beim senden lange dauert
das Umwandeln in Base64 geht jeweils recht schnell von statten und ist übrigens nötig weil noch Steuerzeichen mitgesendet werden und die könnten in einer Datei durchaus auch mal auftreten.
Ich schreibe das Bytearray in den Stream und bei der ZIP datei ließt er pro Sekunde wesentlich weniger Pakete als bei anderen Formaten. (Verschiedene Puffergrößen probierte ich auch schon)
?(
Kommt ein Mann in die Wirtschaft und sagt zum Wirt: 16 Bit!
Sagt der Wirt: Das ist ein Wort!
Das ist schon ne seltsame Sache.
Das Senden kann langsam sein, weil die zip-Daten base64-codiert sehr viel größer sind (glaub ich eher nicht), oder weil das Empfangen so langsam vonstatten geht. Auf Empfangsseite schonmal geschaut, wo es da hängt?
Hallo thetruedon,
hast Du den Tipp von AlfAtor mit dem Virenscanner mal ausprobiert? Die kriechen ja bei Zips je nach Einstellung rein und durchsuchen die Inhaltsdateien, das könnte schon ein echter Grund sein.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
das Umwandeln in Base64 geht jeweils recht schnell von statten und ist übrigens nötig weil noch Steuerzeichen mitgesendet werden und die könnten in einer Datei durchaus auch mal auftreten
Ich sehe da noch keinen Zusammenhang zwischen "Steuerzeichen" und Base64.
Ansonsten würde ich auch auf Virenscanner tippen.
Ups das mit dem Virenscanner hatte ich überlesen
Tatsächlich genau das wars.
Ich vermute ganz stark an der Senderseite denn am Server werden die daten ja erst in eine neue Datei geschrieben da kann ein Virenscanner ja noch nicht wissen dass es eine Zip Datei ist wenn nur Paketweise Bytes ankommen.
Und noch mal zu dem Base64. Ich habe ein Serverprogramm das die Daten die es empfängt unter anderem z.B. mit bestimmten Steuerzeichen trennt. Wenn ich eine Datei habe die aber auch diese Zeichen enthält trennt es z.B. an falschen stellen. Ich kann leider nicht das Empfangsformat groß am Server ändern. Ansonsten wäre es natürlich richtig Base64 ist nicht optimal mit einem Drittel mehr Overhead.
Danke schon mal 👍
Kommt ein Mann in die Wirtschaft und sagt zum Wirt: 16 Bit!
Sagt der Wirt: Das ist ein Wort!