SO_REUSEADDR 的作用

转自:http://hugedream.blogspot.com/2009/11/soreuseaddr.html


當一個Socket server如果重新啟動時,在bind(先前相同的地址和端口)的過程中,就會出現:Address already in use的錯誤訊息,必須等待TCP TIME_WAIT state的時間(2 * MSL)才能使用這個Address。為了避免這個問題發生,我們可以透過修改socket參數來讓socket可以馬上bind之前的Address。


sock = socket(AF_INET, SOCK_STREAM, 0);

int on = 1;
int status = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *)&on, sizeof(on));
if (status == -1)
perror("setsockopt() error");

你可能感兴趣的:(SO_REUSEADDR 的作用)