LINUX.ORG.RU

История изменений

Исправление zaz, (текущая версия) :

В голове есть 5 варианта

1. закрытие соединения ВСЕГДА инициалезирует клиент - что в реальном мире попросту не возможно (зато у тебя не будет TIME_WAIT сокетов).
2. При старте биндить на другой не занятый порт - что не всегда возможно и в 99% глупо.
3. Перевести TCP/IP стек в его исконное состояние (когда конекшен акцептился на порт отличный от листен порта) - как это сделать я хз, разве что в музее найти древний сервер с древней ОС :D, и то не факт что новые операционки / роутеры / фаерволы - с таким мамонтом нормально заработают.
4. Сделать TIME_WAIT меньше чем время перезапуска процесса - глупая затея, да и там лимиты есть (помоему в 60 секунд) и чтоб его обойти нужно будет ядро патчить.
5. Использовать SO_REUSEADDR - что я всегда и делаю (с ним могут быть проблемы только если ты делаеш SO_REUSEADDR + bind + connect, но если делать SO_REUSEADDR + bind + listen + accept - то все ок).

Исправление zaz, :

В голове есть 5 варианта 1. закрытие соединения ВСЕГДА инициалезирует клиент - что в реальном мире попросту не возможно (зато у тебя не будет TIME_WAIT сокетов). 2. При старте биндить на другой не занятый порт - что не всегда возможно и в 99% глупо. 3. Перевести TCP/IP стек в его исконное состояние (когда конекшен акцептился на порт отличный от листен порта) - как это сделать я хз, разве что в музее найти древний сервер с древней ОС :D, и то не факт что новые операционки / роутеры / фаерволы - с таким мамонтом нормально заработают. 4. Сделать TIME_WAIT меньше чем время перезапуска процесса - глупая затея, да и там лимиты есть (помоему в 60 секунд) и чтоб его обойти нужно будет ядро патчить. 5. Использовать SO_REUSEADDR - что я всегда и делаю (с ним могут быть проблемы только если ты делаеш SO_REUSEADDR + bind + connect, но если делать SO_REUSEADDR + bind + listen + accept - то все ок).

Исходная версия zaz, :

В голове есть 5 варианта 1. закрытие соединения ВСЕГДА инициалезирует клиент - что в реальном мире попросту не возможно (зато у тебя не будет TIME_WAIT сокетов). 2. При старте биндить на другой не занятый порт - что не всегда возможно и в 99% глупо. 3. Перевести TCP/IP стек в его исконное состояние (когда конекшен акцептился на порт отличный от листен порта) - как это сделать я хз, разве что в музее найти древний сервер с древней ОС :D, и то не факт что новые операционки / роутеры / фаерволы - с таким мамонтом нормально заработают. 4. Сделать TIME_WAIT меньше чем время перезапуска процесса - глупая затея, да и там лимиты есть (помоему в 60 секунд) и чтоб его обойти нужно будет ядро патчить. 5. Использовать SO_REUSEADDR - что я всегда и делаю (с ним могут быть проблемы только если ты делаеш SO_REUSEADDR + bind + connect, но если делать SO_REUSEADDR + bind + listen + accept - то все ок).