序
要用到IP地址字符串到DWORD值表示的IP的转换.
上网查资料, 有个同学已经搞好了.
可能写的有点小bug, 修复整理了一个.
实验
unsigned int ip2int(const char* pszIP, bool b_hton)
{
bool b_first = true;
unsigned int ui_ip = 0;
unsigned char ucTmp = 0;
char* psz_token = NULL;
char szBuf[MAXBYTE] = {'\0'};
do {
if ((NULL == pszIP)
&& (strlen(pszIP) >= sizeof(szBuf))) {
break;
}
strcpy(szBuf, pszIP); // attention!
psz_token = strtok(szBuf, ".");
while(NULL != psz_token){
if (b_first) {
b_first = false;
} else {
ui_ip <<= 8;
}
ucTmp = (unsigned char)atoi(psz_token);
ui_ip |= ucTmp;
psz_token = strtok(NULL, ".");
}
} while (0);
if (b_hton) {
ui_ip = htonl(ui_ip);
}
return ui_ip;
}
调用方代码
unsigned int ui_ip = ip2int("192.168.6.66", false);