Du könntest das problem mit SendNetworData() umgehen. Die Daten solltest du dabei häppchenweise verschicken, abhängig von der Bandbreite, die zur Verfügung steht, pro Sekunde 1 oder 2 Datenblöcke (Pakete). Bei 100 MBit z.B.:
100MBit/s = 12,5MB/s = Datenblockgröße zwischen 6,25MB und 12,5MB.
Wenn die Verbindung schlechter wird (zeitlicher Abstand zwischen den Blöcken vergrößert sich), kannst du dein Programm die Paketgröße weiter drosseln lassen.
Bug beim versenden großer Daten? [PB 4.1]
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
wenn andere programmiersprachen das problem umgehen,Joel hat geschrieben:In anderen Programmiersprachen funktioniert das auch, liegt glaube ich dann nicht an Windows.
indem ihre libs bei großen files auch eine blockweise NetworkData-Lösung benutzen,
kann es sehr wohl ein OS-Problem sein.
PB sollte immer sehr kleine exen exzeugen, deshalb gibt es die schlanke NetworkFile Lösung,
die aber nur für begrenzte größen geeignet ist.
für größere datenmengen braucht man mehr (maschinen)code, weil mehr sicherheitsabfragen nötig sind.
eine programmiersprache, die wenig auf die größe ihrer Libs achtet,
kann selbstverständlich beide lösungen in einen befehl packen.
dafür wird dort dann dieser abschnitt der exe zig-mal so groß sein wie in PB.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
@Kaeru Gaman
Ich will ja hier nicht behaupten, das was hier gepostet hast, nicht stimmen würde. Aber Deinem Text nach könnte man meinen, es wäre ein OS-Problem und das ist es garantiert nicht!
Auch schreibst Du hier jetzt, daß größere Dateien nicht übertragen werden können, weil eine schlanke NetworkFile Lösung gewählt wurde. Wenn das so ist, muß man den User zumindest drauf hinweisen!
Ich will ja hier nicht behaupten, das was hier gepostet hast, nicht stimmen würde. Aber Deinem Text nach könnte man meinen, es wäre ein OS-Problem und das ist es garantiert nicht!
Auch schreibst Du hier jetzt, daß größere Dateien nicht übertragen werden können, weil eine schlanke NetworkFile Lösung gewählt wurde. Wenn das so ist, muß man den User zumindest drauf hinweisen!
- hardfalcon
- Beiträge: 3447
- Registriert: 29.08.2004 20:46
Das ist doch an sich sowieso die Aufgabe von Windows, dafür zu sorgen, dass Dateien korrekt übertragen werden. Bei TCP/IP ist doch für Fehlerkorrektur/erneutes Senden der TCP/IP-Stack zuständig, und wenn man die WinAPI-Befehle zum Verschicken von Daten übers Netz verwendet, dann wird doch der TCP/IP-Stack von Windows verwendet...