2010-08-07 18 views
3

我需要提取关于两个IP地址的两条信息,然后将这些信息加上两个地址。 我正在考虑一套IP地址对,但通过哪些数据结构我可以写出所有这些信息? 谢谢用于写入4条信息的Java DataStructure

+0

查询你能解释一些样本数据好? – 2010-08-07 17:21:55

+0

是的。 我有一个包含网络捕获流量的pcap文件。我需要探索流的数量(源和目标IP地址之间的对话)。然后找出这个流量的特征,例如找到长度和到达时间。 所有这些一起我需要写这些信息,如 192.168.1.65,217.174.16.1,245684(字节),1.0523(秒) 这些IP地址的类型是字节。 – 2010-08-08 17:12:18

+0

也许你在寻找tuples.http://javatuple.com/ – Emil 2010-08-17 11:40:39

回答

0

即使这不是一个JavaScript应用程序,您可以使用JSON,因为它提供了一个简洁的方式来读取/存储多个数据片段。查看JSON Java Documentation了解关于类的详细信息,并下载相关的源代码。

0

如果你只是写信息,你总是可以使用一个HashMap。除非你知道你打算对数据做什么,否则很难说什么是最好的。

0

只是做一个自定义类(POJO),并根据你想要如何编写它使它Serializable。这样你可以清楚地命名你的字段(和getter和setter),使你的代码更易于阅读(和扩展)。

+0

我需要的是根据我提取的那两个静态图绘制一张图。你能给我一些关于你的建议的线索吗? – 2010-08-07 09:39:22

0

一些这样的事......

class BigClass { //<br> 
    private IPAdreess addr1; //<br> 
    private IPAddress addr2; //<br> 
    private SomeInfo additionalInfo;//<br> 

    //implement accessors//<br> 

    //implement equals, hashCode//<br> 

}//<br> 

ip地址,SomeInfo是你的用户类型。在java中,InetAddress表示IP地址。这可能比您的自定义类型多得多。

“设置”的合适数据结构的选择可以决定很多因素。你想保留命令吗?你是否通过多线程填充它?您希望在该集合中有多少条目? 100S?一百万?

为什么不张贴您的代码?用真实代码给出反馈可能会更容易。

+0

即时通讯使用jnetpcap库,不知你是否熟悉它。 这里是读取n的部分,显示ip地址和长度,我需要再提取一个信息,这也是时间到达。 – 2010-08-08 17:26:41

+0

PcapPacketHandler jPacketHandler = new PcapPacketHandler (){int totalLength = 0; public void nextPacket(PcapPacket packet,String user){ip_ip ip = new Ip4(); String sIP; String dIP; if(packet.hasHeader(ip)== false){return;} totalLength = totalLength + ip.getPayloadLength(); sIP = org.jnetpcap.packet.format.FormatUtils.ip(ip.source()); dIP = org.jnetpcap.packet.format.FormatUtils.ip(ip.destination()); – 2010-08-08 17:27:00

+0

我不能以适当的形式发布它,我该怎么做? – 2010-08-08 17:28:32

1
PcapPacketHandler<String> jPacketHandler = new PcapPacketHandler<String>(){ 
      int totalLength = 0; 
      public void nextPacket(PcapPacket packet, String user) { 
         Ip4 ip = new Ip4(); 
         String sIP; 
         String dIP; 
         if (packet.hasHeader(ip) == false){ 
          return; 
         } 
         totalLength = totalLength+ ip.getPayloadLength(); 
         sIP = org.jnetpcap.packet.format.FormatUtils.ip(ip.source()); 
         dIP = org.jnetpcap.packet.format.FormatUtils.ip(ip.destination()); 
         System.out.println("SIP = "+sIP+" "+"destIP = "+dIP+" "+"Payload Length = "+ip.getPayloadLength()); 
         System.out.println("Total Length = "+totalLength); 
       } 
     }; 

     pcap.loop(10, jPacketHandler, ""); 
     pcap.close(); 
0

我不太明白你想要绘制什么图。我会做的是

  1. 转储的所有数据到SQL数据库
  2. 运行查询产生输入您的图表。
  3. 绘制图例如与JFreeChart甚至Excel中

我想象沿线

select source_ip, dest_ip, sum(time), sum(sent_bytes) group by source_ip, dest_ip