Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 多线程IP扫描器_C_Multithreading_Networking - Fatal编程技术网

C 多线程IP扫描器

C 多线程IP扫描器,c,multithreading,networking,C,Multithreading,Networking,为了用多个线程扫描一系列IP,我决定通过为不同的线程分配不同范围的IP地址来拆分工作,但是我遇到了如何拆分不同范围的问题。如果我在做一个类似的程序,但我要通过一个数组,我会这样做: void *thread() { for(;x < threadRange ;x++) { arr[x] = <insert var here>; } x = threadRange; threadRange+=arrSize/thre

为了用多个线程扫描一系列IP,我决定通过为不同的线程分配不同范围的IP地址来拆分工作,但是我遇到了如何拆分不同范围的问题。如果我在做一个类似的程序,但我要通过一个数组,我会这样做:

void *thread()
{
    for(;x < threadRange ;x++)
    {
            arr[x] = <insert var here>;
    }
    x = threadRange;
    threadRange+=arrSize/threadCount;
}
void*thread()
{
对于(;x

所以我想我的问题是,当扫描IP地址时,我该怎么做?有没有办法对IP地址进行这种类型的计算?

如果你有
X
地址数,并且
Y
线程数,让每个线程处理
X/Y
地址数。由于IP地址范围是32位二进制数,网络是一个2的poser数,很容易进一步划分(子网)按2的幂分成子网的网络。如果您需要有关子网的帮助,请参阅下面这个很好的答案:如果您不希望每个线程一次扫描多个主机,则可以为单个生产者、多个消费者场景创建标准解决方案。或者,您可以使用线程池。顺便说一句:在C++中,你不需要任何空洞的指针。使用
std::thread
@UlrichEckhardt我意外地把它标记为C++,但是我用C来用pTrp来做这个。@ RoMauPin你能进一步解释一下你的意思吗?我对网络编程很陌生,我不明白这会如何帮助我在一系列IP地址上反复扫描网络。