2015-01-27 3 views
0

동일한 포트에서 bind()를 두 번째로 사용하는 프로그램을 실행할 때 EADDRINUSE를 얻습니다.지우기

소켓을 다시 사용하기 위해 setsockopt()를 구현하지 않으려합니다. 내 프로그램을 실행하기 전에 사용 된 포트에 사용 된 소켓을 "제거"하고 싶습니다.

자세한 정보 : Linux OS.

+0

[오류 : 주소와 소켓을 바인딩하는 동안 주소가 이미 사용 중이지만 포트 번호는 \ netstat \'에 의해 무료로 표시됨] (http://stackoverflow.com/questions/5106674/error-address-already) -in-bind-socket-with-address-but-the-port-num) – edmz

답변

0

나는 당신이 소켓을 올바르게 청소하지 않는다고 말할 것이다. 그래서 커널은 더 많은 데이터가 도착할 때까지 기다리고 (TIME_WAIT) 버리고 (RST) 버린다. 이 작업을 성공적으로 수행하면 즉시 포트를 재사용하여 setsockopt을 통해 "강제로"수행 할 필요가 없습니다.

따라서 커널을 명시 적으로 중지시켜야한다고 알릴 필요가 있으므로 setsockopt을 통해 수행 할 수는 없습니다.