c - 使用 libpcap 按进程 PID 过滤网络数据包

标签 c network-programming pcap netstat

我正在尝试使用 C 语言的 libpcap 来分析流量网络。我想通过进程 PID 过滤数据包。我一直在做研究,显然 pcap 不能做我想做的事,但 netstat 可以给我有关进程 pid 的流量信息。

调用“system("netstat - apn")”是不是很难看,或者我可以使用 C/C++ 中的任何其他库吗?我希望我的程序在 Linux 和 Windows 下运行。

最佳答案

是的,system(3)generally frowned upon并且您不会得到命令的输出。如果您想走这条路,请使用 popen(3)正如所讨论的here .

采用替代路线,在 Linux 衍生平台上,我建议结合 /proc 了解您感兴趣的进程的详细信息,并使用它来构建 bpf filter 。您应该能够收集 four or five tuple为您的进程从 /proc/$PID/net/{tcp, udp} 并使用它创建一个过滤器字符串来捕获您想要的数据包。

关于c - 使用 libpcap 按进程 PID 过滤网络数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35551726/

相关文章:

c - glibc的free()的内部工作原理

c# - 如何在两个 C# 应用程序之间创建状态加密连接?

c - netinet/tcp.h 中的有效负载偏移值?

python - 使用 Python 修改 PCAP

c - 如何使用指向函数的指针?

在 kernel_fpu_end 之前调用 kernel_fpu_begin 两次

c - char指针的伪变量数组(字符串数组)在输入后崩溃?

java - 如何在网络中断时继续在 websockets 中发送消息?

java - 如何创建 INetAddress 构造函数

c++ - 傻瓜式 PCAP Web 服务使用日志记录