찾다

 >  Q&A  >  본문

c++ - 데이터 차단 문제를 수신하기 위해 recv를 사용하는 소켓(TCP)이 있습니까?

일반적으로 말하자면: 소켓(TCP)은 데이터를 수신하기 위해 recv를 사용합니다. 커널 캐시에 데이터가 없으면 차단됩니다.

그렇다면 TCP 연결은 끊어지지 않았지만 상대방이 데이터를 보내지 않는다면, recv 함수 호출로 인해 프로그램이 영원히 차단되나요?

扔个三星炸死你扔个三星炸死你2723일 전1295

모든 응답(2)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-06-10 09:50:28

    소켓은 차단과 비차단의 두 가지 유형으로 구분됩니다. 기본 차단 모드는 매개변수 설정을 통해 비차단으로 수정할 수 있습니다.
    차단의 의미: 실제로는 TCP/IP 프로토콜 스택의 버퍼입니다. 1) 차단 모드: 버퍼에 데이터가 없으면 데이터가 반환될 때까지 기다립니다.
    (2) 비 차단 모드: 데이터가 없으면 매개변수가 즉시 반환됩니다. Python에서는 예외가 발생합니다)

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-06-10 09:50:28

    setockopt() 함수를 사용하여 제한 시간을 설정할 수 있습니다

    회신하다
    0
  • 취소회신하다