Autor Beitrag
O'rallY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Do 26.09.02 20:16 
Wie kann ich herausfinden, wenn ich einen Stream über eine TClientSocket-Komponente übertrage (SendStream), wieviel schon übertragen wurde?

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
DeCodeGuru
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1333
Erhaltene Danke: 1

Arch Linux
Eclipse
BeitragVerfasst: Do 26.09.02 20:25 
man könnte einen zweiten Port öffnen, über den man dann Statusinfos schickt. Also einen Statuskanal und einen Transferkanal. Wenn du die Daten die empfangen werden in ein Stream schreibst, kannst du ja mit SizeOf(MyStream); die Größe des Stream herausfinden und dann die Info über den Statuskanal senden.

_________________
Viele Grüße
Jakob
O'rallY Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Do 26.09.02 20:28 
Hmm, werd ich mal ausprobieren müssen.

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
DeCodeGuru
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1333
Erhaltene Danke: 1

Arch Linux
Eclipse
BeitragVerfasst: Do 26.09.02 20:35 
jo, musst du wohl :mrgreen: was man auch machen könnte ist, dass man den Transfer nach 10 übertragenden Packeten mal den Transfer unterbricht, Infos sendet und die Transfer wieder aufnimmt, was aber etwas schwieriger zu realisieren ist. Je nach dem, wie man die Daten sendet.

_________________
Viele Grüße
Jakob
O'rallY Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Do 26.09.02 20:39 
ok, so richtig verstanden habe ich noch nicht was du meinst. Könntest du das bitte noch etwas erläutern? Das man mit SizeOf die Größe einer Variable festellen kann ist mir klar, nur müsste man mit deinem Verfahren ständig die Dateigröße an den Client übermitteln und ich wüsste nicht woher ich eine "Zwischengröße" herbekommen soll. Das Event OnClientWrite schlägt ja erst an, wenn der Client schon geschrieben hat. Do you understand what I mean?

Anmerkung: bezieht sich auf deinen ersten Poste

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
O'rallY Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Do 26.09.02 20:42 
Wie kann man den Transfer nach x Packeten unterbrechen? :) Ok, ich könnte mir das so vorstellen, dass man das ganze Stückchen für Stückchen sendet.

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...


Zuletzt bearbeitet von O'rallY am Do 26.09.02 20:43, insgesamt 1-mal bearbeitet
DeCodeGuru
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1333
Erhaltene Danke: 1

Arch Linux
Eclipse
BeitragVerfasst: Do 26.09.02 20:43 
also, nehmen wir an, dass du beim Client oder Server (is ja auch egal) in der Empfangroutine einen Buffer (buffer: array [0..4096] of Byte; o.ä.) verwendest in dem du immer die empfangenen daten reinschreibst. Dieser Buffer wird dann einfach in ein FileStream geschrieben. So, jetzt kannst du ja nach dem Schreiben in den Filestream einfach die Größe des FileStreams nehmen und die Info über den Infoport senden.

Also, so muss/kann dass eigentlich funktionieren. Es kommt halt darauf an, wie du deine Senden-routine aufgebaut hast.

_________________
Viele Grüße
Jakob
O'rallY Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Do 26.09.02 20:48 
Ok, verstehe was du meinst, nur muss ich dann meine Sendroutine umschreiben (wie du schon sagtest). Ich wollte halt zuerst das Ganze nicht selbst zerstückeln und dann wieder zusammenfügen, sondern die bequemere methode SendStream benutzen, um eine Datei praktisch an einem Stück zu übermitteln. Ok, ich gebs zu, ich bin vielleicht ein bisschen faul :wink: :mrgreen:
Ach ja, danke für die schnellen Antworten

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
O'rallY Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Do 26.09.02 20:58 
Noch eine Frage, wie groß sollte ein Packet ca. sein, was ist dei Standardgröße?

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
DeCodeGuru
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1333
Erhaltene Danke: 1

Arch Linux
Eclipse
BeitragVerfasst: Do 26.09.02 21:13 
jo, des kommt meiner meinung nach auf die übertragungsgeschwindigkeit an. Also wenn man das programm zum übertragen in einem 100-Mbit-Netzwerk verwendet kann man ruhig mal etwas mehr draufhauen. Aber ansonsten verwende ich eigentlich 4096. Das habe ich mal so verwendet und hatte keine probleme. Da ich ADSL habe, schaffe ich einen Upstream von 128 KBit/sec. :arrow: 16KByte/sec. Da meine Buffergröße 4096 beträgt (genau 4KB) kann ich also ca. 4 Packete die Sekunde schicken. Wenn man jetzt nur ISDN hat, hat man nen Up/downstream von 64KBit :arrow: 2 Packete die Sekunde und nen 33,1K-Modem hat ja keiner mehr. Oder? :wink:

Warum habe ich das jetzt eigentlich erzählt? Achja, wollte nur zeigen, wie ich mir das mal zusammengereimt habe :mrgreen:

_________________
Viele Grüße
Jakob