java - 如何使用 Java 监听接口(interface)/设备上的网络流量?

标签 java networking network-programming qos

我正在寻求实现反向 QoS 系统(因为我没有资源来使我的网络饱和以实际执行 QoS)。我所看到的有关使用 Java 捕获网络流量的所有内容似乎都指向 Jpcap - 一个 3 年以上历史的图书馆,或其他类似项目。此外,通读 java.net尽管 ServerSocket 类似乎在正确的轨道上,但文档并没有多大帮助。

我正在寻找的是实际的库源代码,或者更新的/受支持的框架。我想抓取所有来自网络的数据包并将它们放入缓冲区,然后在指定的时间后从缓冲区释放它们,具体时间取决于数据包携带的协议(protocol)。

我知道如何创建套接字应用程序,但不知道如何升级(从技术上讲)到接口(interface)。将不胜感激!

最佳答案

您正在寻找的东西完全超出了通用 Java 应用程序的范围。

如果您打算牢记特定的操作系统,例如 Windows 或 Linux(我接下来的示例),那么您可以做一些事情。

对于 Windows,任何给定的应用程序在没有驱动程序权限的情况下都无法执行此操作。 WinPCap 可能是这种情况下使用最广泛的工具,而这正是 jpcap 使用的工具。这是一个“驱动程序”,基本上只是中间人就是您的流量。

对于 Linux,请查看其他帖子 https://security.stackexchange.com/questions/13267/monitoring-outgoing-network-traffic

我知道这是一个侧面的答案,因为它没有提供 Java 代码,但那是因为 Java 根本不是为以这种方式与系统交互而构建的。

关于java - 如何使用 Java 监听接口(interface)/设备上的网络流量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23464694/

相关文章:

c++ - 将 sockaddr 中的 IP 地址转换为 uint32_t

java - spring-data-mongodb: findAll() 包含输入文档列表和嵌入式 DBRef 文档的搜索参数

java - 我的预购遍历出了什么问题?

java - 如何从没有 api 的网站提取数据到 Android 应用程序中?

c - 为什么箭头键会弄乱标准输出?

c - UDP 数据报中分配的端口号和 sockaddr_in 中的端口号

java - -server -XX :+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler时使用哪个编译器

java - 将图像保存到我的图库中

java - 如何使用最佳方式检索 Json 文件

ruby - 缓冲套接字读取