2017-08-23 39 views
-1

我的任务是实现一个应用程序,该应用程序将接受到某个端口的所有信息。它应该像Wireshark一样工作。收听某个端口上的所有数据

此代码应该监听端口46122的所有内容。 在Wireshark中,我看到一些信息来自此端口。但我的程序没有看到任何东西。

ServerSocket serverSocket = new ServerSocket(46122); 
    Socket clientSocket = serverSocket.accept(); 
    PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); 
      BufferedReader in = new BufferedReader(
           new InputStreamReader(clientSocket.getInputStream())); 
+1

这将只记录通过TCP连接发送的数据。它不会记录TCP/IP标头或任何使用不同协议发送的内容。那是你的意图吗? – erickson

+0

@Am_I_Helpful这就是问题所在。在没有一个客户端连接到此服务器之前,我不会看到任何包,我的理解是正确的吗?但是Wireshark如何做呢? – Bulbum

+0

@erickson我在Wireshark中看到很多在这个端口上收到的数据。但我的程序并不是。如何查看数据?非常感谢 – Bulbum

回答

1

如果要使用Java记录整个TCP数据包,则需要具有“本机”组件的第三方库。核心Java库不能做到这一点。图书馆的建议是无关紧要的,“pcap”和“java”可能是有用的搜索关键字。

+0

Upvoted,+1向我展示解决此问题的任何想法会更有用。 Stll这是使用java设计这样的应用程序的糟糕选择。我不建议任何人使用Java来开发这样的工具,除非它是最后的选择。 –

+0

可能你可以推荐任何图书馆?没有链接,只有名称 – Bulbum

+0

请解释一下“native”组件是什么意思? – Bulbum