用户给出一个起始IP和一个结束IP
如何能循环的按照IP地址规则递增处理?
这个循环应该如何写呢?
给你一段代码,不过是bcb的,
IP地址段扫描代码:
in_addr ia;
unsigned long FirstIp,SecondIp;
int Delta;
AnsiString Addr;
FirstIp = inet_addr("192.168.0.1"); //任意的开始地址
SecondIp = inet_addr("192.168.1.20"); //任意的结束地址
//转换成能直接递增和递减的地址
FirstIp = InvertIp(FirstIp);
SecondIp = InvertIp(SecondIp);
Delta = SecondIp - FirstIp;
for(int i=0; i < Delta; i++)
{
ia.S_un.S_addr = InvertIp( FirstIp++ );
Addr = AnsiString(inet_ntoa(ia));
//扫描
//......
}
//---------------------------------------------------------------------------
unsigned long __fastcall InvertIp(unsigned long NormalIp)
{
unsigned char b1,b2,b3,b4;
b1 = NormalIp & 0x00FF;
b2 = (NormalIp >> 8) & 0x00FF;
b3 = (NormalIp >> 16) & 0x00FF;
b4 = (NormalIp >> 24) & 0x00FF;
return (b1 <<24) | (b2 << 16) | (b3 << 8) | b4;
}
//---------------------------------------------------------------------------