簡體   English   中英

如何使用UDP讀取接收器的數據報包中存儲的延遲

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM