Re[4]: Не могу реально сбросить сокет TCP клиента. Как?
От: Dimonira  
Дата: 04.05.12 07:24
Оценка:
Оказалось, что всё-таки TcpTimedWaitDelay рулит. И, похоже, новое значение вступает в силу после перезапуска системы. Изначально TcpTimedWaitDelay равно 30 секунд, я исправил на 5. Без перезагрузки оказалось, что через 30 секунд после дисконнекта, повторный коннект прошёл таки!
Но вылезло ещё кое-что. Если после коннекта нет обмена, то сервер (моя железка) сама разрывает соединение по таймауту (я поставил 2 минуты). При этом в клиенте возникает исключение "Удалённый хост принудительно разорвал существующее подключение", а при попытке коннекта — исключение "Сделан запрос на подключение для уже подключённого сокета". Что странно, ведь система знает, что коннект разорван. Хотя смысл слова "подключённого" может уже и другой в этой ситуации. Однако после принудительного вызова дисконнекта у клиента, повторный коннект сработал!
Но всё-таки хотелось бы программно "убивать" сокет, чтобы можно было в любой момент без большой задержки реализовывать короткую "сессию" типа коннект-обмен-дисконект. Потому как другой вариант — гонять туфту по сети ради поддержания коннекта, не выглядит привлекательным.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.