在pthreads原始套接字中接收数据包

时间:2011-11-24 19:48:22

标签: c linux sockets pthreads

我正在使用端口扫描程序作为学校项目的一部分,我正在使用原始套接字。我的理解是:

对原始套接字使用多线程时,每个pthread都不会获取NIC看到的数据包的副本。因此,为了处理所有不同的线程,我需要一个接收线程将消息传递给正确的线程。

这是对的吗?

编辑:我的假设是,操作系统只向进程发送一次数据包。如果错误的pthread正在接收数据包,则可能会错过数据包。

1 个答案:

答案 0 :(得分:3)

我认为如果你想在所有线程中接收数据包,你只需要在每个线程中创建一个单独的原始套接字(具有相同的参数)。我还没有找到一个在Linux上描述这个的好资源,但这就是它在Windows上的documented

  

如果同时在计算机上打开了多个SOCK_RAW套接字,   可以将相同的数据报传送到所有打开的套接字