C 소켓의 recvmsg()에 대기열이있는 경우 대기열에 얼마나 많은 항목이 백 로그되어 있는지 확인할 수 있습니까?C에서 소켓의 경우 recvmsg()에 대기열이 있습니까?
내 문제는 recvmsg()에서 무언가를받은 후 코드의 속도가 recvmsg()로 전송되는 데이터의 속도보다 느린 경우가 있는데, 이는 논리적으로 큐를 생성할까요? 대기열이 너무 커지면 어떻게됩니까? 예를 들어
이 내 RECV 경우() 코드 :while (recvmsg(SocketA,...) > 0)
{
...
...something that takes 1.5 seconds to execute/complete...
...
}
및
다음과 같은 기능이 다른 곳에서 호출되는 경우 1 초 : 나는 recvmsg에 대한 참조 페이지를 확인// gets called every 1 second
int send_to_sock()
{
...
send(SocketA, ...);
...
}
()하지만 그들 중 누구도 대기열에 대해 언급하지는 않지만 대기열이있는 것처럼 보입니다. 점진적으로 증가하는 지연을 관찰하고 있기 때문입니다. 그러나 큐가 너무 길면 코드가 작동을 멈추기 때문에 큐의 길이를 확인하는 방법이 있는지 알고 싶습니다.
왜 'recv'에 대한 함수 정의가 있습니까? 일반적으로'recv'는 OS에 의해 정의됩니다 ... –
소켓에 버퍼가 있습니다. 그게 당신이 말하는거야, 아마도 관심이 있습니다 : http://stackoverflow.com/questions/7865069/how-to-find-the-socket-buffer-size-of-linux –
우리는 데이터입니다 당신과 피어 사이의 공간과 시간에 퍼져 나갑니다. 서버, 클라이언트 및 중간 라우터에 대기 중입니다. 해저 섬유를 따라 그리고 지상국과 위성 사이의 자유 공간에 있습니다. 거기에 데이터가 있지만, 당신은 그것이 어디 있는지 얼마나 많이 알지 못합니다. – ThingyWotsit