创建大约65536个套接字的最快方法?

时间:2014-04-23 05:26:07

标签: java sockets

我拒绝接受这个问题只是因为你失败的选民不知道答案。

目标:让程序捕获每个UDP数据包,而不管目标端口如何。 (我已完成此操作但需要10-15分钟才能加载)

现在我正在创建略低于65536个套接字。它工作正常唯一的问题是最初创建它需要几分钟(很多分钟)

ArrayList<DatagramSocket> receiveSocket = new ArrayList<DatagramSocket>(65536);
int i = 65536;
while (i-- > 0) {
    //System.out.println(i);
    try {
        receiveSocket.add(new DatagramSocket(i, InetAddress.getByName("0.0.0.0")));
    } catch (Exception e) {
        continue;
    }
}

有没有办法让这个过程更快?遗憾的是,我只能让一个插座窃取所有端口或者像快七百倍一样创建这些插座...

1 个答案:

答案 0 :(得分:6)

出于多种原因,请不要这样做,其中最重要的两个原因是性能不佳以及对系统资源和其他应用程序的干扰。

而是使用jpcap之类的内容,专门用于有效捕获网络流量。

此外,如果您只需要一个网络流量捕获实用程序,并且您不需要 来编写自己的实用程序,那么总是Wireshark,它基于libpcap, jpcap是一个包装器。无论如何,看看Wireshark可能值得看看功率libpcap(以及jpcap)。