私のudp受信機ソケットはかなり標準的な設定です。私の送信者は36Hzでデータを送信し、受信者は72Hzでデータを送信します。送信あたり12072バイト。C++ udp recvfrom reduce drops
私はcat/proc/net/udpをいつ行うのですか?私は通常得る
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode ref pointer drops
7017: 0101007F:0035 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 10636 2 0000000000000000 0
7032: 00000000:0044 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 14671 2 0000000000000000 0
7595: 00000000:0277 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 11113 2 0000000000000000 0
7660: 00000000:22B8 00000000:0000 07 00000000:00004100 00:00000000 00000000 1000 0 251331 3 0000000000000000 352743
あなたはrx_queueがそこにいくつかの値を持っているのを見ることができますか?
私のコード
int recv_len = recvfrom(s, buf, BUFLEN, MSG_TRUNC, (struct sockaddr *) &si_other, &slen);
// dont worry buflen is like 64000 no error here
std::cout <<" recv_len "<<recv_len<<std::endl;
私は常にキューが非常に大きい場合でも12072 recv_lenとして出力を得ますか?どうしてこれなの ?私の読書をスピードアップしたり、キュー内のすべてのメッセージを読む方法はありますか?私は読んでいる頻度がもっと高くても何が間違っているのか分かりません。
あなたのコードは、それはやっている? (例えば、あなたは72HZで読んでいると思いますが、そうではありません。または、あなたがキャッチしたことのない単純なバグがあります) – nos