2012-02-07 67 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