TCP 포트를 "해제"하는 방법은 무엇입니까?

TCP 포트를 "해제"하는 방법은 무엇입니까?

특정 TCP 포트를 수신하는 코드가 있습니다. 하지만 이 코드를 중지했다가 빠르게 다시 시작하면 오류가 표시됩니다.

ERROR: could not bind to socket on 0.0.0.0:7700

1분 정도 기다리면 갑자기 포트가 "사용 가능"해지고 코드가 다시 실행됩니다.

내 질문: 이 특정 포트를 강제로 "유휴" 상태로 만드는 방법이 있습니까? 1분 정도 기다리지 않고 즉시 코드를 시작할 수 있습니까?

답변1

당신은 그것을 사용할 수 있습니다SO_REUSEADDR

int optval = 1;
/* create socket using socket */
setsockopt(s1, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof optval);
/* bind socket */

이 오류는 TCP 프로토콜이 서버가 방금 닫은 소켓 TIME_WAITnet.ipv4.tcp_fin_timeout. 이는 서버가 소켓을 닫은 후에도 다른 피어가 보낼 수 있는 모든 패킷이 여전히 올바르게 처리되도록 하기 위한 것입니다.

이 스레드의 가장 좋은 답변에서 문제에 대한 좋은 설명은 다음과 같습니다.SO_REUSEADDR(setsockopt 옵션)은 무엇을 의미합니까 - Linux?.

관련 정보