programing

소켓 listen() backlog 매개 변수의 값을 결정하는 방법은 무엇입니까?

codeshow 2023. 8. 20. 12:56
반응형

소켓 listen() backlog 매개 변수의 값을 결정하는 방법은 무엇입니까?

수신 소켓의 백로그 매개 변수에 사용할 항목을 결정하려면 어떻게 해야 합니까?단순히 매우 큰 숫자를 지정하는 것이 문제입니까?

Winsock 프로그래머의 FAQ에는 이에 대한 매우 긴 답변이 있습니다.표준 설정과 NT 4.0 핫픽스에 추가된 동적 백로그 기능에 대해 자세히 설명합니다.

짧은 대기열을 사용해야 하는 특별한 이유가 없는 한 SOMAXCONN을 사용합니다.

대기열에 새 연결을 위한 공간이 없으면 RST가 전송되지 않으므로 클라이언트는 SYN을 재전송하여 자동으로 연결을 계속 시도할 수 있습니다.

또한 backlog 인수는 다른 소켓 구현에서 다른 의미를 가질 수 있습니다.

  • 대부분은 반쯤 열린 연결 대기열의 크기를 의미하며, 일부에서는 완료된 연결 대기열의 크기를 의미합니다.
  • 많은 구현에서 백로그 인수는 다른 대기열 길이를 생성하기 위해 곱해집니다.
  • 너무 큰 값을 지정하면 모든 구현이 자동으로 값을 최대 대기열 길이로 잘라냅니다.

문서에서:

SOMAXCONN의 백로그 값은 소켓을 담당하는 기본 서비스 공급자에게 보류 중인 연결 대기열의 길이를 합리적인 최대 값으로 설정하도록 지시하는 특수 상수입니다.

언급URL : https://stackoverflow.com/questions/114874/how-to-determine-the-value-of-socket-listen-backlog-parameter

반응형