我正在使用Java DatagramSocket类将UDP数据报文发送到端点.数据报必须以60ms的间隔到达端点.
我发现DatagramSocket.Send通常需要> 1 ms(接近2)才能打包并发送不超过56个字节的数据包.这导致我的数据包以62 ms的间隔传送,而不是60 ms.
这是在Windows Vista机器上.以下是我测量时间的方法:
DatagramPacket d = new DatagramPacket(out, out.length, address, port); long nanoTime = System.nanoTime(); socket.send(d); long diff = System.nanoTime() - nanoTime; System.out.println( out.length + " in " + diff + "ms." );
有没有人有提示或技巧来加速这个过程?
您可以使用Timer类来安排事件.
Timer timer = new Timer(); TimerTask task = new TimerTask() { public void run() { //send packet here }}; timer.scheduleAtFixedRate(task, 0, 60);
这将每隔60ms创建一个重复发生的事件来执行"run"命令.在所有事情保持相同的情况下,数据包应该每60分钟接通一次(虽然,第一个数据包将延迟一些数量,垃圾收集/其他任务/等可能会稍微延迟这个数字).