[英]How to read the delay stored in the Datagram packet in the receiver using UDP
我正在使用UDP將序列代碼發送到接收器,現在我想測量發送和接收數據包之間的延遲。 唯一的問題是我不知道如何從序列號后的數據包中讀取我的延遲。
發件人
byte [] packetToSend = new byte[520];
int seqNo = 0;
while (seqNo < 100) {
try {
//Read in a audio data from the recorder
byte[] buffer = recorder.getBlock();
ByteBuffer header = ByteBuffer.allocate(524);
long sentMillis = System.currentTimeMillis();
header.put(buffer);
header.putInt(seqNo);
header.putLong(sentMillis);
//Make a DatagramPacket from it, with client address and port
number
DatagramPacket packet = new DatagramPacketheader.array(),
header.array().length, clientIP, PORT);
//Send it
sending_socket.send(packet);
接收方:
try {
byte[] buffer = new byte[520];
DatagramPacket packet = new DatagramPacket(buffer, 0, 520);
receiving_socket.receive(packet);
// int seqNo = ByteBuffer.wrap(buffer).getInt(512);
long sentMillis = ByteBuffer.wrap(buffer).getLong(508);
long receivedMillis = System.currentTimeMillis();
long delay = receivedMillis - sentMillis;
System.out.println(delay);
到目前為止,我得到的數字是1498894798102,我想我是從ByteBuffer.wrap行中的錯誤索引中讀取的。
分配更大的ByteBuffer
並繼續使用各種get()
(以及發送時的put()
)方法。 丟失所有System.arraycopy()
調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.