2010-10-04 11 views
5

Załóżmy, że masz gniazdo nasłuchujące na porcie TCP, a niektórzy klienci są połączeni. Gdy jeden wyda sock_close (fd) w C i próbuje ponownie powiązać na tym samym porcie, wiązanie kończy się niepowodzeniem. Niektóre państwa TIME_WAIT widać na „netstat -plutnoa”, takie jak:Zamykanie nasłuchującego gniazda TCP w C

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

więc jak można prawidłowo odłączyć gniazdo serwera i natychmiast ponownie podłączyć na tym samym porcie?

+1

Znalazłem SO_REUSEADDR, sprawdzając to teraz ... – whoi

Odpowiedz

8

Chcesz użyć opcji SO_REUSEADDR na gnieździe. Odpowiednią stroną podręcznika jest socket(7). Oto example jego użycia. This question wyjaśnia, co się dzieje.