간혹 Server Program의 Terminate 를 통해 비정상적인 Socket의 Close가 발생하면,
해당 Address/port의 상태가 TIME_WAIT의 상태로 전이가 되어있다. 이때 이 Option을 사용하지 않으면, Bind가 불가능 하게 된다.
*주의할점 : 비정상적인 Packet이 유입될 가능성이 있다.
*예제코드 :
server_sockfd = socket( AF_INET, SOCK_STREAM, 0 );
if(server_sockfd == -1)
{
printf("Create socket Error\n");
exit(0);
}
int option = 1;
setsockopt(server_sockfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));
// fcntl( server_sockfd, F_SETFL, O_NONBLOCK );// FASYNC );
if(bind( server_sockfd, (struct sockaddr*)&server_address, server_len ) != 0)
{
printf("Bind Error\n");
exit(0);
}
댓글 없음:
댓글 쓰기