Закрытие слушающего сокета TCP в C

Предположим, у вас есть сокет, прослушивающий порт 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 ответ

Решение

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

Другие вопросы по тегам