当前位置:  开发笔记 > 编程语言 > 正文

如何加快Java DatagramSocket的性能?

如何解决《如何加快JavaDatagramSocket的性能?》经验,为你挑选了1个好方法。

我正在使用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." );

有没有人有提示或技巧来加速这个过程?



1> James Van Hu..:

您可以使用Timer类来安排事件.

    Timer timer = new Timer();
    TimerTask task = new TimerTask() {
        public void run() {
            //send packet here
        }};
    timer.scheduleAtFixedRate(task, 0, 60);

这将每隔60ms创建一个重复发生的事件来执行"run"命令.在所有事情保持相同的情况下,数据包应该每60分钟接通一次(虽然,第一个数据包将延迟一些数量,垃圾收集/其他任务/等可能会稍微延迟这个数字).

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有