分解ip地址的问题,192.168.0.1-192.168.0.254m_ipstart="192.168.0.1"
m_ipend="192.168.0.254"
我现在要取这个段的所有ip,该怎么搞啊, 会的,帮我写下这点代码!!!
192.168.0.1
192.168.0.2
192.168.0.3
一直到192.168.0.254
我要分别对这段ip中的每一个地址做操作,所以要取出来啊,谢谢。    只要源代码,搞定马上给分!

解决方案 »

  1.   

    char *pIp="192.168.0.1-192.168.0.254";
    char szIpFrom[16],szIpTo[16];
    char num1[4],num2[4],num3[4],numFrom[4],numTo[4];
    int nFrom,nTo;
    sscanf(pIp,"%[^-]-%[^-]",szIpFrom,szIpTo);
    sscanf(szIpFrom,"%[^.].%[^.].%[^.].%[^.]",num1,num2,num3,numFrom);
    sscanf(szIpTo,"%[^.].%[^.].%[^.].%[^.]",num1,num2,num3,numTo);
    nFrom = atoi(numFrom);
    nTo = atoi(numTo);
    for(int i=nfrom;i<nTo;i++)
        printf("%s.%s.%s.%s",num1,num2,num3,itoa(i));
      

  2.   

    设计了个 任意IP段 的打印输出,拿去测试下:#include <winsock.h>
    #pragma comment(lib,"ws2_32.lib")
    #include <iostream.h>
    void main()
    {
            sockaddr_in ipaddress;
            u_long ipBegin = htonl(inet_addr("202.110.111.1"));
            u_long ipEnd = htonl(inet_addr("202.110.111.254"));
            
            for(u_long ipTemp = ipBegin; ipTemp<=ipEnd; ipTemp++)
            {
                    ipaddress.sin_addr.S_un.S_addr = htonl(ipTemp);
                    cout<<inet_ntoa(ipaddress.sin_addr)<<endl;
            }
    }