Portál AbcLinuxu, 12. května 2025 03:25
Po neblokovaném TCP spojení odesílám data pomocí send(). Když vytáhnu kabel, tak se mi ještě několikrát úspěšně zavolá send() a teprve po chvíli se dozvím od select(), který volám před ní, že nelze do soketu zapisovat. Po zastrčení kabelu zpět se neodeslaná data odešlou a select() mi dovolí odesílat další data.
Lze nějaký způsobem zjistit, která data se nepodařilo odeslat, aniž by jsem do svého protokolu implementoval potvrzování přijatých dat, když by jsem kabel nevrátil zpět?
Představuji si to asi takto. Zavolám send() a nezavolám ho znovu dříve než dostanu od OS potvrzení, že se mu data podařilo odeslat. OS dám na toto potvrzení 2s, jinak uzavřu spojení a další navážu až za 50s, protože mám zaručeno, že protistrana do té doby spojení také uzavře, když jí ode mě nepřijdou žádná data. Lze něco takového realizovat nebo jsem úplně mimo?
Řešení dotazu:
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.