programing

소켓 접속과 읽기 타임아웃의 차이점은 무엇입니까?

goodsources 2022. 8. 21. 19:59
반응형

소켓 접속과 읽기 타임아웃의 차이점은 무엇입니까?

3가지 질문:

  1. 소켓 접속과 읽기 타임아웃의 차이점은 무엇입니까?

  2. 접속 타임아웃이 "infinity"로 설정된 것은 무슨 뜻입니까?어떤 상황에서 무한 루프 상태를 유지할 수 있습니까?무한 루프가 죽는 원인이 뭘까요?

  3. 읽기 타임아웃이 "infinity"로 설정된 것은 무엇을 의미합니까?어떤 상황에서 무한 루프 상태를 유지할 수 있습니까?무한 루프가 죽는 원인이 뭘까요?

  1. 소켓 접속과 읽기 타임아웃의 차이점은 무엇입니까?

접속 타임아웃이란, 최초의 접속을 확립할 때의 타임 아웃(TCP 접속 핸드쉐이크 완료)입니다.읽기 시간 초과는 데이터 읽기1 대기 시 시간 초과입니다.클라이언트가 소켓을 작성한 후 초 이내에 서버(또는 네트워크)가 데이터 <타임아웃>을 전송하지 못한 경우read호출하면 읽기 타임아웃 오류가 발생합니다.

  1. 접속 타임아웃이 "infinity"로 설정된 것은 무슨 뜻입니까?어떤 상황에서 무한 루프 상태를 유지할 수 있습니까?무한 루프가 죽는 원인이 뭘까요?

즉, 접속 시도가 영원히 차단될 가능성이 있습니다.무한 루프는 없지만 소켓을 닫는 다른 스레드에 의해 접속 시도가 차단 해제될 수 있습니다.(A)Thread.interrupt()콜도 효과가 있을 수 있습니다.잘 모르겠어요.)

  1. 읽기 타임아웃이 "infinity"로 설정된 것은 무엇을 의미합니까?어떤 상황에서 무한 루프 상태를 유지할 수 있습니까?무한 루프가 끝나는 원인은 무엇입니까?

즉, 에의 전화는read영원히 차단될 수 있습니다.다시 한 번 무한 루프는 없지만read에 의해 차단 해제될 수 있다Thread.interrupt()콜, 소켓 닫기, 그리고 (물론) 다른 쪽 끝은 데이터를 전송하거나 연결을 닫습니다.


1 - 한 논객의 생각처럼...이 아닙니다...소켓이 열려 있거나 유휴 상태일 수 있는 시간 제한.

JVM이 TCP 연결을 확립하기 위해 적용하고 소켓에서 데이터를 읽을 때 대기하는 타임아웃 값입니다.

값이 무한대로 설정되어 있으면 영원히 기다릴 수 없습니다.이는 단순히 JVM에 타임아웃이 없으며 모든 타임아웃에 대한 책임이 OS에 있다는 것을 의미합니다.다만, OS 의 타임 아웃은 매우 길어질 수 있습니다.느린 네트워크에서는 6분 동안 타임아웃이 발생하고 있습니다.

소켓의 타임아웃 값을 설정해도 네이티브코드에서 타임아웃이 발생하면 작동하지 않을 수 있습니다.방화벽에 의해 차단된 호스트에 연결하거나 스위치의 케이블을 분리하여 Linux에서 이 문제를 재현할 수 있습니다.

TCP 타임아웃을 처리하는 안전한 방법은 접속 코드를 다른 스레드로 실행하고 시간이 너무 오래 걸리면 스레드를 중단하는 것뿐입니다.

언급URL : https://stackoverflow.com/questions/3069382/what-is-the-difference-between-connection-and-read-timeout-for-sockets

반응형