我学习了一些在小型网络中使用 voip over udp 的知识。我知道有很多库可以做,并且通过一些方法调用来完成我所需要的一切,但正如我所说我正在学习,所以需要重新发明轮子来看看它是如何工作的。
我目前正在研究 DatagramPacket 类,我注意到没有方法可以在 DatagramPacket 类中设置标头信息(即我需要知道进行交错的数据包顺序序列号)。
反映环境的一点代码:
byte[] block;
DatagramPacket packet; // UDP packet
/* x Bytes per block , y blocks per second,
z ms time block playback duration */
block = recorder.getBlock(); // assume I have class that handles audio
// recording and returns speech in a
// uncompressed form of bytes
packet = new DatagramPacket(block, block.length, clientIP, PORT);
首先,我假设因为它是 UDP,所以发送者并不真正关心任何事情,除了他将数据包扔到某个地方的简单事实。所以这就是为什么里面没有这样的方法。
其次,我假设我需要自己做 - 在要发送的字节块中添加额外的字节,其中包含数据包的序列号?但是我也担心如果我这样做,那么我如何识别字节是否是标题字节而不是音频字节?我可以假设第一个字节代表一个数字,但是我们知道这个字节只能代表 258 个数字。我以前从未真正在字节级别上工作过。或者可能还有其他技术?
简而言之,要进行交错,我需要知道如何设置数据包序列号,因为我无法订购无序数据包:-)
谢谢你,