加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何加快Java DatagramSocket的性能?

发布时间:2020-12-15 05:15:22 所属栏目:Java 来源:网络整理
导读:我正在使用 Java DatagramSocket类将UDP数据报文发送到端点.数据报必须以60ms的间隔到达端点. 我发现DatagramSocket.Send通常可以采用 1 ms(接近2)打包并发送不超过56个字节的数据包.这导致我的数据包以62 ms的间隔传送,而不是60 ms. 这是在Windows Vista机
我正在使用 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,60);

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读