所以我通过多播通过UDP发送音频。并且发送方每 10 毫秒发送一个原始音频 UDP 数据包。不幸的是,它时不时会丢失一个数据包。所以我所做的就是尝试为发送/接收计时,这样我就可以在我错过了一个时解决。
这是我目前拥有的:
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 毫秒来处理消息。