Re[4]: Отправка данных через сокет в блокирующем режиме
От: vers  
Дата: 08.05.07 08:49
Оценка:
V>>Да, действительно. А если данных 100 мегабайт? Пока получатель пришлет подтверждение, у клиента таймаут наступит.

ST> Таймаут наступит только в том случае если произойдет обрыв сетевого соединения (умер получатель, или вынули сетевой кабель), тогда сам стек протоколов TCP/IP попробует несколько раз повторить передачу потерянного пакета и не получив подтверждения от принимающей стороны выдаст ошибку. А пока данные успешно передаются таймаут не сработает, если конечно вы не установите значение Socket.SendTimeout в ненулевое значение .


ST> Идея разбить сообщение на маленькие блоки, с подтверждением после каждой переданной порции, не лишена смысла, тогда не придется ожидать пока освободится буфер стека TCP. Размер порции можно сделать 1 килобайт, тогда она точно поместится в один TCP пакет.


Тогда такой чисто теоретический вопрос: предположим, что я программирую FTP-клиент, в таком случае как мне отображать прогресс передачи данных? Даже, если это будет асинхронная передача, нигде не указывается, сколько байт в текущий момент уже передано. Либо "передача идет", либо "уже передано".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.