Cソケットのrecvmsg()にキューがある場合、キューにバックログされているアイテムの数はどのようにして調べることができますか?Cでは、ソケットの場合、recvmsg()にキューがありますか?
私の問題は、recvmsg()から何かを受け取った後のコードの速度が、recvmsg()に送信されたデータの速度よりも遅いことがあります。キューが大きすぎるとどうなりますか?
while (recvmsg(SocketA,...) > 0)
{
...
...something that takes 1.5 seconds to execute/complete...
...
}
とどこかに以下の機能が1秒毎に呼び出される場合:これは私のrecv()のコードであれば
は、例えば
// gets called every 1 second
int send_to_sock()
{
...
send(SocketA, ...);
...
}
私は(recvmsgのためのリファレンスページを確認しました)しかし、彼らはどれもキューについて何も言及していませんが、私は漸進的に追加する遅延を観察しているので、キューがあるようです。しかし、キューが長すぎるとコードが機能しなくなるので、キューの長さをチェックする方法があるかどうかを知りたい。
なぜあなたは 'recv'の関数定義を持っていますか?通常、 'recv'はOSによって定義されています... –
ソケットにはバッファがあります。それがあなたの言いたいことなら、これはおそらく興味深いでしょう:http://stackoverflow.com/questions/7865069/how-to-find-the-socket-buffer-size-of-linux –
私たちは,,データはあなたとピアの間の空間と時間に広がります。これは、サーバー、クライアント、および中間ルーターにキューイングされています。海底線沿いにあり、地上局と衛星の間の自由空間にあります。そこにデータがありますが、あなたはそれがどこでどれくらいあるか分かりません。 – ThingyWotsit