Wysyłanie pliku - wielkość części a prędkośc wysyłan

0

Witam,
pisze program do przesylania plików przez neta i nie wiem jaką wielkośc pojednynczej wysylanej części ustalić. Próbowałem wysylac po 1024kB, ale wtedy plik za wolno sie wysyla. Jak ustaliłem wielkość częsci na 4096 kB to sie okazało że komputer po przeciwnej stronie odbiera tylko okolo 1250kB. Wie ktoś może czemu tylko te 1250 trafia do drugiego komputera a nie całe 4096 które było wysłane ? Pozdrawiam

0

piszesz o wielkosci pakietu? o_O

w takim razie 1MB to stanowczo za duzo, 4 to juz przegiecie na max... ja w swoim programiku ustawilem 1kB, maksimum to 8kB (tak mam zanotowane... a moze max to 1,2kB?)...

0

Sory, mój błąd, źle napisałem. Ustawiałem na 1024 B i 4096 B i ta druga opcja była juz za duża. Komputer do którego wysyłam plik dostaje w jednej częsci nie więcej niz 1250 B mimo że ja wysyłam 4096 B.
PS: Czy Twój program działa przez neta czy przez sieć lokalną ?

0

A i jeszcze jedno. Ja wysyłając plik robie to w taki sposób: wysyłam jedną część i czekam na odpowiedź od drugiego komputera (odpowiada mi on czy pakiet doszedł i czy jest cały), po tym wysyłam kolejny pakiet. Jeśli ta pojedyncza częśc wynosi 1 KB to zauważyłem że maksymalna prędkośc wysyłania to tylko około 10kB/s. To by sie zgadzało bo np ping ode mnie do drugiego komputera jest 50ms i jego odpowiedź tez ma <ort>opuznienie </ort>50 ms, wiec wyslanie jednej częsci trwa 100ms. A jak Ty realizyjesz wysyłanie poszczególnych częsci ?

0

Jeśli wysyłasz przez TCP, to nie potrzebujesz sprawdzać, czy pakiet doszedł, TCP to gwarantuje.

0

Używam komponentów TServerSocket i TClientSocket. Z tym sprawdzaniem czy pakiet doszedł to zrobiłęm po to żeby wiedzieć po jakim czasie moge wysyłać następny. Bo w jednakowych odstępach czasu nie moge wysyłać bo odbiorca moze nie zdążyc z odbieraniem. A jak można to inaczej zrobić ?

0

Wydaje mi się, że sprawdzenie "czy pakiet doszedł" jest niepotrzebne. Dane są kolejkowane. (Po wysłaniu, np. danych A i B, dopóki nie odbierzemy A nie możemy odebrać B...)

0

To jak wysyłać poszczególne częsci pliku? Skąd wiedzieć czy juz część A sie wysłała i można juz wysyłać część B ? Jeśli między wysłaniem kolenych części zastosuje sleep() to prędkość wysyłania będzie stała, nie będzie sie dostosowywała do prędkości łącza, aktualnego użycia itp

1 użytkowników online, w tym zalogowanych: 0, gości: 1