如何通过 java 从 Internet 读取 TCP 数据包的内容

How to read contents of TCP packets from Internet by java

我正在研究如何使用 Java 构建入侵防御系统 (IPS) 应用程序,但是我不知道如何将 Internet 数据包从 PC 重定向到我的应用程序并读取数据包。我希望从数据包中获取的数据格式类似于 Wireshark 生成的数据。我将如何在 Java 应用程序中获取像这样的低级数据包数据?

不幸的是,Java 无法访问 "raw sockets"——您需要这种访问权限才能从 Wireshark 转储或类似文件中获取您期望的详细信息。

如果您需要对应用程序的其余部分使用 Java,请考虑使用 JNI(link 是一个很好的 JNI 教程)。它允许您在 Java 应用程序中使用 C/C++/Fortran 代码,因此您可以进行系统调用并获得所需的访问权限。