首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于带宽测试的Java高速udp业务分组接收

用于带宽测试的Java高速udp业务分组接收
EN

Stack Overflow用户
提问于 2012-12-07 20:33:39
回答 2查看 877关注 0票数 3

我正在尝试构建一个带宽测试工具,有点像IPerf,但是在java中,我的丢包似乎比预期的要多,但是带宽稍微高一些(从30-40 me /s开始),我希望有人能指出一些优化或者我做错了什么事情,这会导致我丢失数据包。

这是接收代码,它将大小为2000的队列传递给另一个收集度量的类,它只从数据包传递相关信息。使用NIO

代码语言:javascript
复制
while (data.isRunning()) 
{
    if(channel.receive(buf) != null)
    {

    int j = buf.array().length;
    //add the packets important information to the queue
    packet_info.add(new PacketInfoContainer(buf.getLong(j-12), System.nanoTime(), buf.getInt(j-4)));

    // if we have 2000 packets worth of information, time to handle it!
    if((packet_info.size() == 2000))
    {
        Runnable r1;
        //if this is running on the client side, do it this way so that we can calculate progress
        if(client_side)
        {
            if(data_con.isUserRequestStop())
            {
                System.out.println("suposed to quit");
                data.stopTest();
                break;
            }
            if(packets_expected > 0)
            {
                total_packets_received+=1000;
                setChanged();
                notifyObservers("update_progress" + Integer.toString( (int) (((double)total_packets_received/(double)packets_expected) * 1000) ) );
            }
            r1 = new PacketHandler(packet_info, results, buffer_size, client);
        }
        //server side, no nonsense
        else
        {
            r1 = new PacketHandler(packet_info, results, buffer_size);
        }
        pool.submit(r1);
        packet_info = new LinkedList<PacketInfoContainer>();
    }

}
buf.clear();

}

EN

回答 2

Stack Overflow用户

发布于 2013-01-05 22:06:54

UDP不是很好。也许你可以使用TCP &检查S.O.的tcp状态来查看重传.

netstat -s

您可以使用CharacterGenerator,将BufferedOutputStream更改为64 to并删除os.flush();以加速和测试.

票数 1
EN

Stack Overflow用户

发布于 2016-08-07 11:36:09

这还不能让我发表评论,我来了。

你不应该看到掉落的数据包,直到线路限制被击中。我建议在花费大量时间查看代码之前,隔离掉数据包的问题,并使用工具来确定是否存在硬件/环境问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13770553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档