유닉스 데이터 그램 소켓에 대기중인/보류중인 데이터 그램의 양을 얻어야합니다. max_dgram_qlen은 수신 버퍼에 대기 할 수있는 데이터 그램의 최대 값을 알려주고 그 후에 차단됩니다. 그러나 일부 소켓 옵션이나 일부 Linux 파일 읽기를 통해 유닉스 데이터 그램 소켓에 대해 이미 대기중인 데이터 그램의 양에 대한 방법이 있습니까? 저에게 알려주세요. 감사.유닉스 도메인 소켓에 대기중인 데이터 그램의 양을 얻는 방법
3
A
답변
1
는 man page에서 /proc/net/udp
을 읽어
/proc 디렉토리/인터넷/UDP
는 UDP 소켓 테이블의 덤프를 장착합니다. 대부분의 정보는 디버깅과 별개로 사용되지 않습니다. "sl"값은 소켓에 대한 커널 해시 슬롯이며 "local_address"는 로컬 주소이며 포트 번호는 입니다. "rem_address"는 원격 주소이고 포트 번호는 입니다 (연결된 경우). "St"는 소켓의 내부 상태입니다. "tx_queue"및 "rx_queue"는 발신 및 수신 데이터 큐이고 커널 메모리 사용 조건은 입니다. "tr", "tm-> when"및 "rexmits" 필드는 UDP에서 사용되지 않습니다. "uid"필드는 소켓의 작성자 인 의 유효 UID를 보유합니다. 형식은 다음과 같습니다 당신이 실제로 값으로 아무것도 할 수있는 기회를 얻을에서 오래된 그 때까지는 당신이 얻을 수있는 값이 이미/잘못 될 수 있음을
가sl local_address rem_address st tx_queue rx_queue tr rexmits tm->when uid 1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0 1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0 1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0
참고. 당신은 그 정보에 의존하려고하지 않는 디자인을 생각해내는 것이 나을 것입니다. –