Laden...

ZIP Ordner über Netzwerk senden

Erstellt von thetruedon vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.866 Views
thetruedon Themenstarter:in
111 Beiträge seit 2011
vor 12 Jahren
ZIP Ordner über Netzwerk senden

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!

A
764 Beiträge seit 2007
vor 12 Jahren

Hallo thetruedon,

da bisher sonst niemand geantwortet hat, komm ich mal mit meinem unvorhandenen Wissen. Probier mal aus:

  • Virenscanner und/oder Firewall testweise ausschalten.
  • (mit z.B. System.Diagnostics.Stopwatch) feststellen, wo genau der Flaschenhals ist, beim einlesen der Datei oder Encoding, Decoding oder Senden.

Gruß, Alf

6.862 Beiträge seit 2003
vor 12 Jahren

Hallo,

wieso überhaupt der Umweg mit Base64 codieren, wenn du die Daten als Bytearray verschickst?

Baka wa shinanakya naoranai.

Mein XING Profil.

thetruedon Themenstarter:in
111 Beiträge seit 2011
vor 12 Jahren

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!

A
764 Beiträge seit 2007
vor 12 Jahren

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?

3.170 Beiträge seit 2006
vor 12 Jahren

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

U
1.688 Beiträge seit 2007
vor 12 Jahren

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.

thetruedon Themenstarter:in
111 Beiträge seit 2011
vor 12 Jahren

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!