Linux: 소켓의 커널 버퍼 크기 가져오기

Linux: 소켓의 커널 버퍼 크기 가져오기

TCP 소켓을 통해 많은 양의 데이터를 수신하는 C 응용 프로그램이 있습니다. 이 파일 설명자/소켓에 대한 커널 버퍼 크기를 어떻게든 얻을 수 있습니까? 내가 가지고 있는 파일 설명자에 대해 커널에 얼마나 많은 데이터가 남아 있는지 알고 싶습니다.

감사합니다

답변1

당신은 그것을 사용할 수 있습니다이것 SIOCINQ/FIONREAD ioctl:

int bytes_left;
ioctl(sock, FIONREAD, &bytes_left);

이는 "수신 버퍼에 대기 중인 읽지 않은 데이터의 양을 반환합니다." ( SIOCINQLinux 에서 linux/sockios.h) .FIONREADsys/ioctl.h

소켓의 버퍼 용량을 검색하려면 다음을 사용하세요.getsockopt그리고SO_RCVBUF.

관련 정보