일반적으로 말하자면: 소켓(TCP)은 데이터를 수신하기 위해 recv를 사용합니다. 커널 캐시에 데이터가 없으면 차단됩니다.
그렇다면 TCP 연결은 끊어지지 않았지만 상대방이 데이터를 보내지 않는다면, recv 함수 호출로 인해 프로그램이 영원히 차단되나요?
소켓은 차단과 비차단의 두 가지 유형으로 구분됩니다. 기본 차단 모드는 매개변수 설정을 통해 비차단으로 수정할 수 있습니다. 차단의 의미: 실제로는 TCP/IP 프로토콜 스택의 버퍼입니다. 1) 차단 모드: 버퍼에 데이터가 없으면 데이터가 반환될 때까지 기다립니다. (2) 비 차단 모드: 데이터가 없으면 매개변수가 즉시 반환됩니다. Python에서는 예외가 발생합니다)
setockopt() 함수를 사용하여 제한 시간을 설정할 수 있습니다
소켓은 차단과 비차단의 두 가지 유형으로 구분됩니다. 기본 차단 모드는 매개변수 설정을 통해 비차단으로 수정할 수 있습니다.
차단의 의미: 실제로는 TCP/IP 프로토콜 스택의 버퍼입니다. 1) 차단 모드: 버퍼에 데이터가 없으면 데이터가 반환될 때까지 기다립니다.
(2) 비 차단 모드: 데이터가 없으면 매개변수가 즉시 반환됩니다. Python에서는 예외가 발생합니다)
setockopt() 함수를 사용하여 제한 시간을 설정할 수 있습니다