怎么检查一个IP是正确与否啊? 用C. 有没有现成的方法?急!!!
看看输入的ip是否正确

解决方案 »

  1.   

    何谓正确,是必须保证a.b.c.d的然后a<256,b<256,c<256,d<256?char szIP[256]="192.156.0.1";int a=0;b=0,c=0,d=0;
    if(4==sscanf(szIP,"%d.%d.%d.%d",&a,&b,&c,&d) && a>=0 && a<256 && b>=0 && b<256 && c>=0&& c<256 && d>=0 && d<256)
    {
    //OK
    }
      

  2.   

    inet_addr
    如果非法,则返回INADDR_NONE
      

  3.   

    DentistryDoctor(雅克医生<改行做程序员了>你的方法还不很对啊,
    如果是这样 char szIP[256]="192.156.0.1ssss";
    也会被认为是正确的IP的
    要怎么改?inet_addr 这个方法在哪里有啊? 我在MSDN中没有查到啊
    gethostbyaddr() 这个也没有查到
      

  4.   

    呵呵,怎么会在MSDN中查不到呢?是winsock的函数啊
    inet_addr(const char * );
    我用过的
      

  5.   

    barsteng(barsteng)
    inet_addr(const char * ); 要导入哪个包啊?
      

  6.   

    unsigned long inet_addr(
      const char* cp
    );Parameters
    cp 
    [in] Null-terminated character string representing a number expressed in the Internet standard ".'' (dotted) notation. 
    Return Values
    If no error occurs, inet_addr returns an unsigned long value containing a suitable binary representation of the Internet address given. If the string in the cp parameter does not contain a legitimate Internet address, for example if a portion of an "a.b.c.d" address exceeds 255, then inet_addr returns the value INADDR_NONE.Header: Declared in Winsock2.h.
    Library: Use Ws2_32.lib.
      

  7.   

    这个方法怎么能判别 错误IP ,比如 "192.168.0.1ss"
    应该是不可以的
      

  8.   

    是的:
    LPSTR as = "192.168.0.2s";
    unsigned long aa = inet_addr((char *)as);
    LPSTR bs = "192.168.1223.3";
    unsigned long bb = inet_addr((char *)bs);
    LPSTR cs = "126.123.25.2";
    unsigned long cc = inet_addr((char *)cs);
      

  9.   

    aa,bb,cc都等于多少?
    我这里他们都等于0XFFFFFFFF
      

  10.   

    哦,错了,应该是CC不为0XFFFFFFFF
      

  11.   

    如果是错误的IP,就返回0XFFFFFFFF