我想编写一个有 2 个线程的程序,一个线程连续捕获来自网络的数据包并每隔 t 秒将它们转储到缓冲区中,另一个线程连续读取该缓冲区并每 t 秒处理一次。这可以在 C 中完成吗? 还是 Java 会是更好的选择?
1603 次
3 回答
5
C 和libpcap
于 2010-01-13T03:31:40.927 回答
3
这里的答案是著名的“libpcap”。只要有一个好的 libpcap 包装器可用,就可以使用你最喜欢的语言。
- 如果您喜欢它,C/C++ 当然是一个完美的选择,因为您不需要任何包装器。
- JNetPcap ( http://jnetpcap.com/ ) 是一个 java winpcap/libpcap 包装器
- Sharpcap ( http://www.codeproject.com/KB/IP/sharppcap.aspx?msg=2472909 ) 是一个 C# libpcap 解析器。前段时间我用它做了一些事情。
- ...
所以选择你的语言,检查包装器的存在并继续。如果没有此语言的包装器,请更改您的选择,或创建您自己的包装器
于 2010-01-13T07:07:38.573 回答
1
它当然可以在 C 中完成。
在 Java 中执行此操作将取决于您是否有权访问 Java 的数据包捕获库(假设您的意思是要捕获任意数据包,而不仅仅是专门针对您的应用程序的数据包)。
于 2010-01-13T03:33:06.527 回答