C언어

bind 에러 해결 방법

뮹실이 2013. 10. 31. 17:20

close 함수로 소켓을 소멸 시켜도 커널은 바로 소멸 시키지 않고 몇초정도 유지시킴


클라이언트와 처리되지 않은 전문을 마저 처리하도록


bind 된 소켓이 아직 소멸되지 않았는데 같은 주소, 같은 포트로 또 다른 소켓이 bind 요청하니 


에러 발생


해결 방법 : 소켓에 옵션 설정


option = 1;          // SO_REUSEADDR 의 옵션 값을 TRUE 로


setsockopt( server_socket, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option) );


SO_REUSEADDR을 지정해 주면 같은 포트에 대해 다른 소켓이 bind()되는 것을 허락해 주기 때문에 bind() 에러 발생 안함