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.