Перезапись сокета после сбоя - PullRequest
3 голосов
/ 15 июля 2011

Вот среда:

client -> router -> server

клиент будет продолжать запись данных на сервер, даже если соединение разорвано.

Вот шаги:

  1. У маршрутизатора

    есть некоторые проблемы, поэтому клиент получит сообщение об ошибке.

  2. маршрутизатор восстановлен

Может ли клиент записать данные на серверкак и раньше.

PS: это TCP-соединение.

1 Ответ

2 голосов
/ 15 июля 2011

TCP предназначен для временных сбоев.Механизмы буферизации, упорядочения, подтверждения, тайм-аута и повторной передачи, встроенные в TCP, позаботятся о некоторых отброшенных пакетах.Концы подключенного потока TCP будут видеть только задержку при восстановлении маршрута.Клиент может переполнить свой буфер отправки сокета и вернуть ошибку из вызова отправки, и вам решать, как это обработать (ожидание, повторная попытка, отправка).

Это не будет работать, хотя ваш маршрутизатор действительно NAT межсетевой экран, которым обычно являются потребительские "маршрутизаторы".

Это также не будет работать, если серверное программное обеспечение решит закрыть ваше соединение после некоторого периода предполагаемой неактивности.

Я предлагаю потратить некоторое время на понимание TCP / IP немного больше, возможно, покупая книгу :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...