편집 한 버전의 질문을 토대로 "비인가"또는 닫기()가 확실하지 않습니다. 두 가지 옵션이 있습니다 :
1) listen()을 호출 한 후 accept()를 호출 할 때까지 (논리적으로 충분히) 연결이 실제로 허용되지 않습니다. 소켓 작업을 무시하고 accept()를 연기 할 때까지 "unlisten"할 수 있습니다. 모든 인바운드 연결은 포트가 수신 대기 모드로 열렸을 때 작성된 대기열에 백 로그를 시도합니다. 백 로그 대기열이 스택에서 가득차면 추가 연결 시도가 단순히 바닥에 떨어집니다. accepts()를 사용하여 재개하면 신속하게 백 로그를 대기열에서 제외하고 더 많은 연결을 준비 할 수 있습니다.
2) 포트가 일시적으로 완전히 닫히지 않게하려면 커널 수준의 패킷 필터를 포트에 동적으로 적용하여 인바운드 연결 시도가 네트워크 스택에 도달하지 못하게 할 수 있습니다. 예를 들어, 대부분의 * nix 플랫폼에서 BPF (Berkeley Packet Filter)를 사용할 수 있습니다. 즉, 플랫폼의 방화벽 기능을 사용하여 관심있는 포트로 들어오는 인바운드 패킷을 드롭하려고합니다. 이것은 물론 플랫폼에 따라 다르지만 가능한 접근 방법입니다.보통의 백 로그 청취
열기 소켓 :
) 프로토콜 레벨에서 동일한 효과를 내지 않는데, 수신 대기 로그가 가득 차서 연결을 거부하거나 연결을 거부하면 Dave가 원하는 것을 달성하지 못할 수도 있습니다 로드 밸런서 등등. 이것은 단지 짧은 만료 된 성공적인 연결처럼 보일 것입니다. –
BSD 소켓을 사용하면 소켓을 잃지 않고 언로드 할 방법이 없으므로 완벽한 방법은 아닙니다. accept를 가진 커넥션에 대한 소켓 핸들을 먼저 얻지 않고 close를 수행한다. 이것이 작동하지 않는다면 Dave는 새로운 소켓 라이브러리가 필요하다. –
당신의 대답에있는 링크가 깨진다. –