Tag zusammen,
ich programmiere gerade einen TCP Datei-Server und -Klienten.
Das Prinzip funktioniert ganz einfach:
Klient stellt Verbindung her
Server sendet Eintrag (Dateiname + Größe)
Klient vergleicht Dateigröße
Klient fordert Datei an, falls Dateigrößen unterschiedlich
Das Senden der Datei funktioniert so:
Klient fordert Paket an (bis jetzt 512 Byte)
Server sendet Paket
klappt alles wunderbar, so lange die Dateien nicht groß sind. (<100KB)
Nur leider habe ich auch vor größere Dateien (damit meine ich max. 3MB)
zu versenden.
Wenn ich weiterhin dieses Prinzip verwende, würde es ewig dauern eine Datei runterzuladen.
Beispiel 80KB:
160 * 512 = 160 Anfragen
1 Anfrage: 50ms
=8000ms
Somit würde ich schon für eine 80kB Datei 8 Sekunden nur fürs Anfordern des nächsten Paketes verbraten.
Ich hab übrigens 512 Byte gewählt, weil ich auf http://www.win-tux.de/c_028_007.htm#RxxobKap02800704002D231F022193 gelesen hatte, dass 512 Byte (richtig, ich hab mich verlesen
, es sollen KB sein) die richtige Puffergröße wäre.
Hab es dann auf 512KB vergrößert, was zur Folge hat, dass das Programm während dem Übertragen unregelmäßig die Verbindung abbricht.
Das macht es immer, wenn ich eine Größe über 1024 Byte wähle.
Damit hab ich 2 Fragen:
1. Was ist die optimale Puffergröße?
2. Welches Prinzip sollte ich beim Senden der Datei verwenden?
Danke fürs lesen, hoffe ihr könnt mir bei dem Problem helfen
ich programmiere gerade einen TCP Datei-Server und -Klienten.
Das Prinzip funktioniert ganz einfach:
Klient stellt Verbindung her
Server sendet Eintrag (Dateiname + Größe)
Klient vergleicht Dateigröße
Klient fordert Datei an, falls Dateigrößen unterschiedlich
Das Senden der Datei funktioniert so:
Klient fordert Paket an (bis jetzt 512 Byte)
Server sendet Paket
klappt alles wunderbar, so lange die Dateien nicht groß sind. (<100KB)
Nur leider habe ich auch vor größere Dateien (damit meine ich max. 3MB)
zu versenden.
Wenn ich weiterhin dieses Prinzip verwende, würde es ewig dauern eine Datei runterzuladen.
Beispiel 80KB:
160 * 512 = 160 Anfragen
1 Anfrage: 50ms
=8000ms
Somit würde ich schon für eine 80kB Datei 8 Sekunden nur fürs Anfordern des nächsten Paketes verbraten.
Ich hab übrigens 512 Byte gewählt, weil ich auf http://www.win-tux.de/c_028_007.htm#RxxobKap02800704002D231F022193 gelesen hatte, dass 512 Byte (richtig, ich hab mich verlesen
Hab es dann auf 512KB vergrößert, was zur Folge hat, dass das Programm während dem Übertragen unregelmäßig die Verbindung abbricht.
Das macht es immer, wenn ich eine Größe über 1024 Byte wähle.
Damit hab ich 2 Fragen:
1. Was ist die optimale Puffergröße?
2. Welches Prinzip sollte ich beim Senden der Datei verwenden?
Danke fürs lesen, hoffe ihr könnt mir bei dem Problem helfen