programing

연결타임아웃 대 소켓타임아웃

goodsources 2022. 8. 7. 16:52
반응형

연결타임아웃 대 소켓타임아웃

사용 중인 라이브러리에 문제가 있습니다.도서관일 수도 있고 내가 잘못 쓴 것일 수도 있어!

기본적으로 이 작업을 수행할 때(밀리초 단위의 타임아웃)

_ignitedHttp.setConnectionTimeout(1);  // v short
_ignitedHttp.setSocketTimeout(60000);  // 60 seconds

타임아웃 예외가 생성되지 않고 정상적으로 동작합니다.다만, 다음의 조작을 실시하면,

_ignitedHttp.setConnectionTimeout(60000);  // 60 seconds
_ignitedHttp.setSocketTimeout(1);          // v short

소켓 예외가 발생.

그럼 왜 접속 예외를 시뮬레이트할 수 없는 거죠?소켓과 접속 타임아웃의 차이를 잘못 알고 있습니까?도서관은 여기 있습니다(아직 정식으로 공개되지 않았습니다).

접속 타임아웃은 TCP 접속을 시작할 때만 발생합니다.일반적으로 이 문제는 원격 시스템이 응답하지 않을 때 발생합니다.즉, 서버가 셧다운되었거나, IP/DNS 이름이 잘못되었거나, 포트가 잘못되었거나, 서버에 대한 네트워크 연결이 다운되었음을 의미합니다.

소켓 타임아웃은 연속적인 착신 데이터 플로우를 감시하기 위한 전용입니다.지정된 타임아웃 시간 동안 데이터 흐름이 중단되면 연결이 정지/중단된 것으로 간주됩니다.물론 이것은 데이터가 항상 수신되는 연결에서만 작동합니다.

소켓 타임아웃을 1로 설정하면 밀리초마다 새로운 데이터를 수신해야 합니다(데이터 블록을 읽고 블록이 충분히 크다고 가정).

착신 스트림만 밀리초 이상 정지하면 타임아웃이 발생합니다.

연결 타임아웃은 프로그램이 다른 프로세스에 대한 연결을 설정하기 위해 대기하는 최대 시간입니다.이 시점에서는 애플리케이션 데이터를 가져오거나 게시하지 않고 연결만 확립합니다.

소켓 타임아웃은 개별 패킷을 대기할 때의 타임아웃입니다.소켓 타임아웃이 완전한 응답을 받기 위한 타임아웃이라는 것은 일반적인 오해입니다.따라서 소켓타임아웃이 1초이고 응답 패킷이 3개의 IP 패킷으로 구성되어 있는 경우 각 응답 패킷이 도착하는 데 0.9초, 총 응답 시간이 2.7초이면 타임아웃은 발생하지 않습니다.

언급URL : https://stackoverflow.com/questions/7360520/connectiontimeout-versus-sockettimeout

반응형