当前位置: 技术问答>linux和unix
请教:有没有检测是否为合法IP地址的函数?
来源: 互联网 发布时间:2015-05-24
本文导语: 如题 | 可以用inet_aton(),将第二个参数置NULL,则该函数就会检查地址的合法性。 但该特征并没有写入文档。 | typedef struct IPADDR { char i1; char i2; ...
如题
|
可以用inet_aton(),将第二个参数置NULL,则该函数就会检查地址的合法性。
但该特征并没有写入文档。
但该特征并没有写入文档。
|
typedef struct IPADDR {
char i1;
char i2;
char i3;
char i4;
}
//转换ip字符串为16进制数,没有对ip地址位数不够进行判断,自已加吧.
int parse_ip_addr(char * szStr, IPADDR *ipAddr)
//输入:szStr
//输出:ipAddr
//返回0表明转换成功,ipAddr中返回了得到的IPADDR类型的数据,
//返回-1表明转换失败
{
//char cCount;
char szTemp[10];
char cI,cJ;
unsigned int iTest;
cI=0;
cJ=0;
//get byte 1
cJ=0;
#ifdef WY_DEBUG
display(1,"%s",szStr);
inkey(0);
#endif
while ('0'i1= iTest & 0x0ff;
//jump off '.'
cI++;
//get byte 2
cJ=0;
while ('0'i2= iTest & 0x0ff;
//jump off '.'
cI++;
//get byte 3
cJ=0;
while ('0'i3= iTest & 0x0ff;
//jump off '.'
cI++;
//get byte 1
cJ=0;
while ('0'i4 = iTest & 0x0ff;
if (0 != szStr[cI])
return FAIL;
#ifdef WY_DEBUG
display(1,"Return 0");
#endif
return SUCCESS;
}
char i1;
char i2;
char i3;
char i4;
}
//转换ip字符串为16进制数,没有对ip地址位数不够进行判断,自已加吧.
int parse_ip_addr(char * szStr, IPADDR *ipAddr)
//输入:szStr
//输出:ipAddr
//返回0表明转换成功,ipAddr中返回了得到的IPADDR类型的数据,
//返回-1表明转换失败
{
//char cCount;
char szTemp[10];
char cI,cJ;
unsigned int iTest;
cI=0;
cJ=0;
//get byte 1
cJ=0;
#ifdef WY_DEBUG
display(1,"%s",szStr);
inkey(0);
#endif
while ('0'i1= iTest & 0x0ff;
//jump off '.'
cI++;
//get byte 2
cJ=0;
while ('0'i2= iTest & 0x0ff;
//jump off '.'
cI++;
//get byte 3
cJ=0;
while ('0'i3= iTest & 0x0ff;
//jump off '.'
cI++;
//get byte 1
cJ=0;
while ('0'i4 = iTest & 0x0ff;
if (0 != szStr[cI])
return FAIL;
#ifdef WY_DEBUG
display(1,"Return 0");
#endif
return SUCCESS;
}