2010-08-07 17 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