【问题标题】:Listening to all the data on a certain port [closed]监听某个端口上的所有数据[关闭]
【发布时间】:2017-08-24 01:57:02
【问题描述】:

我的任务是实现一个应用程序,该应用程序将接受来自某个端口的所有信息。它应该像 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()));

【问题讨论】:

  • 这只会记录通过 TCP 连接发送的数据。它不会记录 TCP/IP 标头或使用不同协议发送的任何内容。这是你的意图吗?
  • @Am_I_Helpful 这就是问题所在。在没有客户端连接到此服务器之前,我不会看到任何包,我理解对吗?但是 Wireshark 是如何做到的呢?
  • @erickson 我在 Wireshark 的这个端口上看到了很多数据。但我的程序没有。如何查看数据?非常感谢
  • 你的程序除了监听和接受一个套接字外,什么都不做。如果您想查看数据,您必须读取它。您的作业应该以 Java 不可行且超出您目前的技能的方式返回。

标签: java sockets


【解决方案1】:

如果您想用 Java 记录整个 TCP 数据包,您需要一个具有“本机”组件的第三方库。核心 Java 库无法做到这一点。库推荐是题外话,“pcap”和“java”可能是有用的搜索关键字。

【讨论】:

  • 赞成,+1。仍然是使用 java 设计此类应用程序的糟糕选择。我不建议任何人使用 Java 来开发这样的工具,除非它是最后的选择。
  • 你能推荐任何图书馆吗?没有链接,只有名字
  • 请解释一下“原生”组件是什么意思?
  • @Am_I_Helpful 是的,你是对的,但这是我的任务。我别无选择:(
  • @Am_I_Helpful 为什么?
猜你喜欢
  • 2017-03-21
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 2011-11-06
  • 1970-01-01
  • 2012-04-09
  • 2010-09-10
相关资源
最近更新 更多