【发布时间】:2017-12-23 03:20:00
【问题描述】:
我需要创建一个功能类似于 WireShark 的 Java 应用程序,因为它能够侦听 UDP 流量。但是我需要了解更多关于数据报的信息,而不仅仅是数据,我需要知道发送者的 IP 和 MAC 地址。有没有办法在 Java 中实现这一点?
这是我正在谈论的 Wireshark 的屏幕截图
请注意,以太网 II 堆栈具有 mac,而 Internet 协议版本 4 具有 Src Ip。
这种情况的用例是网络上有多个设备发出数据(因为在这个消息中是 STS:ANT:OK:8)。但我需要知道这个发件人的 mac 和 IP 是什么,以便我可以按发件人和 mac 对 msgs 进行分类。 (从技术上讲,我可以在网络上有重复的 IP。)所以两者都是需要的。这也允许我显示发生这种情况的错误情况。
【问题讨论】:
-
MAC 将毫无意义。如果源不在您的本地网段上,则 MAC 将是路由器的 MAC,而不是源。
-
“从技术上讲,我可以在网络上拥有重复的 IP” - 真的吗?那不是一个功能网络。我在这里闻到了XY Problem。
-
您可以从
DatagramPacket获取IP 地址,但要获取MAC,您必须求助于jpcap 之类的东西 -
你需要解决的实际问题是什么?
-
@jim Mac 实际上并非毫无意义,没有路由器,IP 是静态的,所以如果有人可以在同一个网络上放置重复的硬件......不好但可能
标签: java networking udp