Port reusing (TCP/IP)

yeziz 08.06.2004 - 17:49 | Привет, ув. All! Проблемка: при больших объемах пересылаемых данных закрытие сокета не приводит к освобождению порта (порт впадает в состояние TIME_WAIT или FIN_WAIT_2). После этого, до того момента, как порт освобожден, использование его приводит к очень неприятным ошибкам: коннект, якобы, прошел, send ошибки не возвращает и отваливается по таймауту. То, что друзья из Microsoft называют Graceful Shutdown не помогает, или я что-то не так делаю. Есть соображения? Заранее благодарен.
ste 1 - 08.06.2004 - 18:55 | Так сконфигурируй эти тайм-ауты на маленькое значение.
yeziz 2 - 08.06.2004 - 19:00 | Какие таймауты? При приеме-отправке? Чтобы еще быстрее все падало? Проблема в состоянии порта: он не освобожден, а как поуправлять им я не знаю...
ste 3 - 08.06.2004 - 19:56 | tcp_fin_wait_2_timeout и tcp_time_wait_interval
yeziz 4 - 08.06.2004 - 23:27 | Ок, спасибо! А где можно про них почитать?
yeziz 5 - 15.06.2004 - 16:50 | В продолжение темы: а что может быть причиной того, что при попытке открыть сокет он ассоциируется с невалидным портом (портом в состоянии TIME_WAIT)? Или, короче, что я такого сделал плохого, чтобы операционка вернула мне невалидный порт?
ste 6 - 15.06.2004 - 16:53 | А ты просишь любой свободный сокет?
yeziz 7 - 15.06.2004 - 17:10 | Да, обычным WSASocket(), без bind(). Проверяю состояние портов до открытия сокета, перед коннектом, после коннекта и состояние порта, с которым ассоциирован сокет, TIME_WAIT.
ste 8 - 15.06.2004 - 17:16 | А зачем ты это используешь? Делай socket()
yeziz 9 - 15.06.2004 - 17:23 | Я пользуюсь overlapped вводом-выводом (WSASend, WSAReceive). Потому и сокет открываю с использованием WSASocket (позволяет указать, что сокет будет использовать overlapped)

>>