TCP, гарантия доставки пакетов

233
30 июля 2018, 05:20

Работаю с TCP и столкнулся с вопросом, который по факту упирается в понимание протокола.

Я беру некоторые данные и отправляю их клиенту, например через блокирующий сокет clientSocket.write(data) или через Netty client.channel.writeAndFlush(data).

Вопрос 1. Предположим метод write завершился без ошибок. Правильно ли я понимаю, что это означает, что клиент 100% получил данные, потому что клиент выслал подтверждение приема?

Вопрос 2. Если write свалился по таймауту с исключением, означит ли это что клиент 100% отбросит данные? (не может ли произойти такого, что клиент выслал подтверждение что данные успешно приняты и начнет их обработку, но сервер каким либо образом его не получил? Например ack был выслан уже после происхождения тайм-аута на сервере или даже сеть отвалилась и ack вовсе не пришел серверу)

Answer 1

Нет и нет.

Метод write завершается без ошибок когда данные были успешно скопированы во внутренний буфер драйвера TCP.

READ ALSO
Java проблема с распаковкой 7zip

Java проблема с распаковкой 7zip

В общем у меня есть проект, которые скачивает архив 7zip после проверяет есть ли он и тогда пытается его распаковать с помощью библиотеки rgapache

174
Android Двойной SeekBar

Android Двойной SeekBar

Ребят как можно сделать двойной Seekbar? Например вот такой:

182
переход от Fragment к Fragment(Tab)

переход от Fragment к Fragment(Tab)

Имеется Tab, который подгружает данные

211