tcp bind 에러 원인과 해결법과 SO_REUSEADDR
TIME_WAIT는 연결이 중심이 되는 TCP에서 끊어진 연결과 새로운 연결을 구분짓기 위해서(데이터 무결성을 위해) 생겨났다. 소켓이 닫힌 후 일정 시간 동안 커널에서 해당 포트 바인드를 막음으로써 위와 같은 문제를 해결할 수 있다 약 90초 동안의 TIME_WAIT 시간을 가져서 bind를 막게 되는데, UNIX에서는 이 시간을 건드리지 말라고 한다. 하지만 복잡하지 않는 TCP 소스코드라면 소켓 설정을 달리해서 bind 에러를 막을 수 있다 int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen); level은 소켓, IP, TCP 레벨이 있으며, optname에 SO_REUSEADDR을 지정해 주..
2019. 7. 22. 19:56