SendBuf gubi pakiety w sieci??

0

Mam problem tego typu ze podczasz przesylania plików przez Sockety komenda SendBuf to czesto plik nie sciga sie u innej osoby lub sciaga sie tylko mala czesc pliku.Wyglada na to ze niby jakby Serwer nie zdązyl ich zapisywac,ale jak robie ze za każdym razem Serwer potwierdza do Klienta ze otrzymal pakiet , to transfer jest TRAGICZNY. Zna ktos moze lepszy sposób na przesyłanie plików CLIENT>SERWER>KLIENT ??? Prosze o pomoc, bo naprawde juz nie mam sily na to, a komenda TFileStream jest za prosta ,ciezko np.zrobic do niej pasek postepu wysylania i w ogóle.

0

Okno tcp/ip ma w windows bodaj 8K, wiec musisz wysylac mniejsze porcje, jak chcesz transfer dobry to moze pokombinuj z udp, wysylal naglowek z informacja o polozeniu fragmentu w docelowym pliku i dane, po za konczeniu transferu klient niech pyta o brakujace czesci itd az bedzie caly plik.

To samo mozesz zrobic w tcp, zalezy od warunkow sieci w jakiej bedzie to pracowac.

0

Moje pakiety wynoszą po 1KB kazdy.I to mnie dziwi ze Serwer nie nadąża ich łapać chyba.Bo to wszystko jest tam wysylane w biegu,Klient wysyla 1 pakiet, i zaraz nastepny.w ogóle nie czeka az Serwer se go zapisze.I to wygląda tak że Serwer zapisuje może co 3,4 pakie,poniewaz Klient nie czeka az Serw zapisze pakiet tylko Od razu wysyla nastepne.Bez sensu.A gdy robisz potwierdenia odbioru pakietu przez Serwera i wsyylasz ta odpowiedz do Klienta po kazdym 1KB to bez sensu bo nie ma sensu nawet tego przesylac przy takim transferze (100KB ok 2min :P).MOze ma ktoś jakiś pomysł?

0

mialem ten sam problem, bardzo wiele czasu zajelo mi znalezienie rozwiazania a jest ono banalnie proste :)

w kodzie wysylajacym wystarczy linijke

ServerSocket1.Socket.Connections[0].SendBuf(Buffer, SizeOf(Buffer))

zastapic

repeat until ServerSocket1.Socket.Connections[0].SendBuf(Buffer, SizeOf(Buffer))<>-1

funkcja SendBuf zwraca -1 jesli kolejka wysylania jest pelna, dlatego zanim wykona sie kolejny SendBuf mamy pewnosc ze kolejka zostala zwolniona a co za tym idzie program odbierajacy odebral poprzednio wyslany bufor

0

uzyj FTP o wiele lepsza wydajnosc

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