Jak zrobić prędkość wysyłania w tym komponencie?
Bo niby coś zrobiłem, ale to jest dziwne i nie wygląda zbyt prawdziwie, bo wyświetla mi za często te same dane...
Dla przykładu:

wrzucam plik na serwer i pokazuje prędkość (celowo nie dzieliłem przez 1024):

196608
65536
65536
65536
65536
65536
65536
i tak dalej

wrzucam jeszcze raz to samo i początek identyczny: 196608, a później znowu 65536, 65536, 65536, 65536

no to wchodzę na jakiś hosting np. przeklej.pl i uploaduję tam jakiś dowolny plik by zapchać łącze, a później w swoim programiku włączam wysyłanie i wygląda tak:

65536
32768
65536
32768
32768
65536
32768
65536
32768
32768
32768
32768
65536
32768
32768
32768
32768
32768
32768
65536
i tak dalej

jak dla mnie, coś jest nie tak

nie wrzucałem wysyłania do osobnego wątku (ograniczyłem się na razie do Application.ProcessMessages; i AntiFreeze)

  • Timer jest odpalany wraz z rozpoczęciem wysyłania pliku (1000ms).
  • w "onWork" idHttp, do zmiennej globalnej wrzucam, aktualizuję zliczone, wysłane bajty
new_b:= (AWorkCount);

A w timerze mam:

Label1.Caption:= IntToStr(new_b - old_b); //[aktualne bajty] minus [stare bajty] //np. 5000b - 3000b = 2000 bajtów/sec
old_b:= new_b;

//
Timera zakomentowałem (wywaliłem kod) i w OnWork idHTTP wrzuciłem:

Memo1.Lines.Add(IntToStr(AWorkCount));

i wynik działania (wysyłanie drobnego pliku):

//pierwszy raz wysyłam plik
32768
65536
98304
131072
163840
196608
229376
262144
294912
327680
353216
406

//drugi raz wysyłam plik (identyczne dane), za trzecim razem itd też są identyczne
32768
65536
98304
131072
163840
196608
229376
262144
294912
327680
353216
406

//zapchałem łącze na hostingu do plików i kolejny raz wysyłam, dane identyczne

wychodzi na to, że IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode; AWorkCount: Int64); zmienna AWorkCount aktualizuje się co: 32768 bajtów, bo takie paczki pewnie są wysyłane do serwera i po tej paczce jest funkcja indy aktualizująca, mówiąca "wrzuciłem paczkę, AWorkCount:= AWorkCount + 32768; //bufor"...
Dobrze, czy źle rozumiem?

niewyspany jestem więc jeśli palnąłem jakąś głupotę to wybaczcie.
Jakieś porady jak otrzymać prawdziwy wynik prędkości wysyłania danych? Z tymi paczkami mającymi 32768 bajtów dobrze, czy źle mówię? Trzebaby te paczki zmniejszyć na np. tych 32 kB na np. 2 kB (czyli wysyłać porcjami po 2Kb, aktualizować AWorkCount i wtedy miałbym w timerze dobry wynik?). W ogóle możliwa taka zmiana? Czy bredzę i nie znam się?

Proszę o porady.