Назад | Перейти на главную страницу

Могу ли я установить таймаут TCP до 10-20 минут?

Важно полагаться на гарантированную доставку TCP даже в случае мобильного клиента, который может надолго пропасть в туннеле, когда TCP со стандартными настройками откажется и закроет соединение. Можно ли заставить реализацию TCP продолжать попытки до 10-20 минут? Какие настройки нужно сделать в linux и на мобильных телефонах (android и iOS)? Спасибо.

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

man tcp - ищите tcp_retries [1,2] для машин Linux. Я понятия не имею, что делать с Android, и, учитывая отношение Apple к настройке на уровне системы, вероятно, нет никакого способа сделать это на iOS, кроме случаев, когда вы побег из тюрьмы.

Если отбросить таймауты сокетов TCP, большинство приложений реализуют свои собственные тайм-ауты, которые, вероятно, значительно короче таймаутов на транспортном уровне. Возможность настройки вообще зависит от конкретного приложения - для него нет общесистемного параметра.