프로그래밍/Unix/Linux

socket bind 에러

AlwaysNR 2015. 7. 9. 14:11

어떤 포트를 사용하는 프로그램이 종료 되면, 그 포트는 TIME_WAIT상태...

일정 시간이 지난 후 커널에서 해제됨.

TIME_WAIT 상태일때 bind요청을 하면 커널에서 거부.

이를 해결하기 위해 소켓이 재사용 되는것을 허용하면 됨.


......

    int yes = 1;

    if (setsockopt(server_sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes)) == -1) {

        perror("setsockopt");

        exit(1);

    }


    bind(server_sockfd, (struct sockaddr *)&server_address, server_len);

......