2012-02-07 59 views
-3

我把if語句中的Java代碼,找出如果pcap文件中包含某些字符串或不是,如果是,那麼不顯示在我的其他條件字符串,但我仍然得到在該字符串我的其他條件。誰能告訴我什麼是可能的問題?Java條件工作不正常

我的代碼

 String a=new String(packet.data); 
     if(a.contains("image/")) 
     { 

     } 
     else 
     { 
      System.out.println(a); 
     } 
+1

第一眼看起來很好。也許在測試之前將字符串發送到System.out,以確保它重新確實包含您認爲它所做的事情? – PaulJWilliams 2012-02-07 12:44:14

+0

'如果'不是循環。同樣很難分辨出你想要的是什麼。 – Viruzzo 2012-02-07 12:44:52

+4

a是什麼內容? – 2012-02-07 12:45:01

回答

4

假設packet.data是一個字節數組,你不指定編碼這些字節應如何解釋文字 - 這幾乎總是一個錯誤。它將使用系統默認編碼,這隻會巧合地成爲正確的編碼。

網絡分組是固有二進制數據;如果你想從它們中提取文本,你需要了解它們的結構 - 包括使用什麼編碼。雖然你可以只是盲目地將所有的網絡數據包視爲ASCII數據,它會給你不適當的結果。

+0

我在一個文件中寫了「a」的內容,內容就像是這個HTTP/1.0 200 OK Date:Wed,10 Feb 2011 13:20:32 GMT Content-Length:35 Pragma:no-cache 到期日:星期三,2000 4月19日11時43分00秒GMT 的Last-Modified:星期三,2004年1月21日19點51分30秒GMT 內容類型:圖像/ GIF 緩存控制:私人,無緩存,NO-緩存=設置Cookie,代理重新驗證 服務器:GFE/2.0 連接:保持活動 – Natasha 2012-02-07 12:56:17

+0

@Natasha:你是怎麼把它寫在文件中?你對字符編碼有多少了解?您*需要*區分二進制和文本數據。老實說,這個*在Java中不是一個問題 - 這是您的代碼中某處以及您的理解中的問題,但是當您不給我們足夠的信息時很難提供幫助。 – 2012-02-07 13:11:55

0

你就不能檢索通過類似packet.getBuffer()或讓你的緩衝區?

+0

這應該是一個評論,而不是一個答案... – home 2012-02-07 14:08:36