Как надежно обрабатывать нестабильное подключение через TCP-сокеты? - PullRequest
1 голос
/ 03 сентября 2011

Я создаю клиент, который общается с удаленным сервером через сокет TCP.Время от времени клиент передает сообщение на сервер, или сервер передает сообщение клиенту.

Это будет работать на ноутбуках, поэтому подключение будет довольно нестабильным.Они могут потерять свой Wi-Fi, они могут перевести ноутбук в спящий режим и разбудить его на более позднем этапе и т. Д. Я внедряю систему пинг-понга, чтобы обнаружить потерю соединения (все в одном сокете. Клиентские пинги, серверные понги).

Что делать при сбое проверки связи? (или клиент отправляет сообщение, которое никогда не подтверждается). Я могу либо:

  1. Продолжать пинг доЯ получаю пинг
  2. Закройте сокет и несколько раз пытаюсь подключить сокет, пока соединение не будет установлено успешно

Вариант 1, очевидно, немного проще, но я не знаю, если этодостанет мне поведение, которое я хочу.Что происходит, если сервер закрыл свою сторону соединения?Кроме того, если, скажем, ноутбук просто не имеет Wi-Fi-соединения, все эти пинги будут просто поставлены в очередь, а затем отправлены все вместе, как только он получит Wi-Fi обратно?Не уверен, что я хочу забивать свой сервер тысячами пингов при каждом переподключении.

Клиент написан на Flash, поэтому не так много низкоуровневого доступа к таким параметрам, как KEEP_ALIVE.

...