そのため、マルチキャスト経由で UDP 経由でオーディオを送信しています。そして、送信者は生のオーディオ UDP パケットを 10 ミリ秒ごとに送信しています。残念ながら、時々パケットが失われます。だから私がしたことは、送受信の時間を計って、見逃した場合に解決できるようにすることでした.
これが私が現在持っているものです:
prevReceived = System.currentTimeMillis();
socket.receive(recv);
long messageReceived = System.currentTimeMillis();
if (dateDiff > 20) {
... Missed packet add the previous packet
私が抱えている問題は、Java マルチソケット受信メソッドがメッセージを受信するのに 70 ミリ秒かかることがあるということです。しかし、Microsoft ネットワーク モニターで確認すると、送信はまだメッセージを送信しています。
そのため、マルチソケット オブジェクトに保留中のパケットがあるかどうかを確認する方法があるかどうか疑問に思っていました: socket.count() など。または、ソケット時間からデータグラムパケットを受信しました。たとえば、recv.timestamp() のようなものです。
Microsoft ネットワーク モニターが 10 ミリ秒ごとにメッセージを処理しているときに、メッセージの処理に 70 ミリ秒かかっている理由がわかりません。