我正在使用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." );
Run Code Online (Sandbox Code Playgroud)
有没有人有提示或技巧来加速这个过程?
您可以使用Timer类来安排事件.
Timer timer = new Timer();
TimerTask task = new TimerTask() {
public void run() {
//send packet here
}};
timer.scheduleAtFixedRate(task, 0, 60);
Run Code Online (Sandbox Code Playgroud)
这将每隔60ms创建一个重复发生的事件来执行"run"命令.在所有事情保持相同的情况下,数据包应该每60分钟接通一次(虽然,第一个数据包将延迟一些数量,垃圾收集/其他任务/等可能会稍微延迟这个数字).
| 归档时间: |
|
| 查看次数: |
7125 次 |
| 最近记录: |