TCP 소켓에서 데이터를 가져 오는 Linux에서 인터페이스를 작성하고 있습니다. 사용자는 수신 된 데이터가 저장된 버퍼를 제공합니다. 제공된 버퍼가 작 으면 오류 만 반환하려고합니다. 첫 번째 문제는 버퍼가 작을지를 결정하는 것입니다. recv() 함수는 버퍼에 실제로 기록 된 바이트 양을 반환합니다. recv() 맨 페이지에 명시된 MSG_TRUNC 플래그를 사용하면 여전히 동일한 결과를 반환합니다. 두 번째 문제는 여전히 소켓에 대기중인 데이터를 삭제하는 것입니다. 따라서 제공된 버퍼가 작다고 결정하면 소켓에 남아있는 모든 것을 지우고 싶습니다. 소켓을 다시 닫고 열거 나 아무것도 남지 않을 때까지 수신하는 것 외에는 다른 방법이 있습니까? 최고 감사합니다 <소켓에 데이터가 남아 있는지 확인한 후 폐기하십시오.
아무 것도 남지 않을 때까지 recv하는 것이 좋습니다. (0을 반환합니다) -하지만 사전 설정 타임 아웃 (이 경우 5 초입니까?)을 기다릴 필요가 없습니다. recv 데이터 또는 시간 초과 기다립니다?
설명자/설명 비트는 필요하지 않습니다. 질문을하십시오. – vezult
원래 게시물에 대한 링크를 제공해 주시겠습니까? – jweyrich