TCP spojeni, send() a ztracena data

Ladislav Vaiz spam na nagano.cz
Středa Červenec 5 08:04:35 CEST 2006


Petr Janda wrote:

>- mam tcp spojeni, kterym posilam data prostrednictvim send()
>- pokud druhej konec upadne, tak send() vrati pocet odeslanych byte,
>  data odejdou ze sitovky (druha strana posle RST), a ja se nikdy
>  nedovim, ze nedorazily na misto
>- dalsi volani send uz zjisti, ze data nejsou. Neni to ani o poctu
>  paketu (kdyz poslu vice dat, nz MTU), tak se ztrati vsechno z jednoho
>  volani send() )
>
>Jak se tyto pripady resi - napisu si vlastni potvrzovani (tak nejak jsem
>si myslel, ze o tohle se postara TCP)?
>  
>
TCP je "transportní" vrstva - buď přenese data nebo se rozpadne spojení. 
Nikde se ale nedozvíte, kolik dat se přeneslo, než se to rozpadlo. 
Musíte si implementovat vlastní "relační" vrstvu, která bude mezi daty 
přenášet značky a potvrzovat je. Protože se data přenáší sekvenčně, tak  
v okamžiku přijetí potvrzení víte, že všechna data před značkou byla 
přijata.
La'd"a




Další informace o konferenci Linux