TCP 소켓을 통해 많은 양의 데이터를 수신하는 C 응용 프로그램이 있습니다. 이 파일 설명자/소켓에 대한 커널 버퍼 크기를 어떻게든 얻을 수 있습니까? 내가 가지고 있는 파일 설명자에 대해 커널에 얼마나 많은 데이터가 남아 있는지 알고 싶습니다.
감사합니다
답변1
당신은 그것을 사용할 수 있습니다이것 SIOCINQ
/FIONREAD
ioctl
:
int bytes_left;
ioctl(sock, FIONREAD, &bytes_left);
이는 "수신 버퍼에 대기 중인 읽지 않은 데이터의 양을 반환합니다." ( SIOCINQ
Linux 에서 linux/sockios.h
) .FIONREAD
sys/ioctl.h
소켓의 버퍼 용량을 검색하려면 다음을 사용하세요.getsockopt
그리고SO_RCVBUF
.