Закрытие слушающего сокета TCP в C - PullRequest
5 голосов
/ 04 октября 2010

Предположим, у вас есть сокет, прослушивающий порт TCP, и некоторые клиенты подключены.Когда кто-то запускает sock_close (fd) в C и пытается снова выполнить привязку на том же порту, связывание завершается неудачно.Некоторое состояние TIME_WAIT отображается в «netstat -plutnoa», например:

tcp        0      0 127.0.0.1:4567          127.0.0.1:32977         TIME_WAIT   -                timewait (17.12/0/0)

Итак, как правильно отключить сокет сервера и немедленно повторно подключиться к тому же порту?

1 Ответ

9 голосов
/ 04 октября 2010

Вы хотите использовать опцию SO_REUSEADDR в сокете.Соответствующая справочная страница: socket(7).Вот пример его использования. Этот вопрос объясняет, что происходит.

...