我拒绝接受这个问题只是因为你失败的选民不知道答案.
目标:让程序捕获每个UDP数据包,而不管目标端口如何.(我已完成此操作但需要10-15分钟才能加载)
现在我创建的插槽略小于65536个.它工作正常唯一的问题是最初创建它需要几分钟(很多分钟)
ArrayListreceiveSocket = new ArrayList (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; } }
有没有办法让这个过程更快?遗憾的是,我不能只让单个插座窃取所有端口或创建这些插座,速度快七百倍......
出于多种原因,请不要这样做,其中最重要的两个原因是性能不佳以及对系统资源和其他应用程序的干扰.
而是使用类似jpcap的东西,它专门用于有效捕获网络流量.
另外,如果你需要的是一个网络流量捕捉工具,你不需要编写自己的,总有Wireshark的,这是基于libpcap的,这JPCAP是一个包装.无论如何只需查看电源libpcap(以及jpcap)就可以查看Wireshark .