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