void getHostIP(char* hostIP,const char* sourceStr)
{
char nbuf[4];
int sn[4];
int i,ret,start,n,m;
int runnum=0;
start = 0;
while (1)
{
runnum++;
//第一个数大于255的情况
if (runnum > 1)
{
ret=RE_ERR;
for (i=start+1;i<strlen(sourceStr);i++)
{
if (sourceStr[i]<'1' || sourceStr[i]>'9')
{
start = i;
ret=RE_OK;
break;
}
}
if(ret==RE_ERR)
{
break;
}
}
//查找第一个数为数字的
ret=RE_ERR;
for (i=start;i<strlen(sourceStr);i++)
{
if (sourceStr[i]>='1' && sourceStr[i]<='9')
{
start = i;
ret=RE_OK;
break;
}
}
if(ret==RE_ERR)
{
break;
}
//在剩余的字串中是否含有三个点
n=0;
for (i=start;i<strlen(sourceStr);i++)
{
if (sourceStr[i]=='.')
{
n++;
}
}
if (n<3)
{
ret = RE_ERR;
break;
}
ret=RE_ERR;
memset(nbuf,0,sizeof(nbuf));
for (i=start,m=0,n=0;i<strlen(sourceStr);i++)
{
if (sourceStr[i]>='0' && sourceStr[i]<='9')
{
if(n<3)
{
nbuf[n]=sourceStr[i];
ret=RE_OK;
}
else
{
ret=RE_ERR;
break;
}
n++;
}
else if (sourceStr[i]=='.')
{
if (strlen(nbuf)==0)
{
ret=RE_ERR;
break;
}
sn[m] = atoi(nbuf);
if (sn[m] <= 255)
{
m++;
n=0;
memset(nbuf,0,sizeof(nbuf));
if (m==4)
{
ret=RE_OK;
break;
}
}
else
{
ret=RE_ERR;
break;
}
}
else
{
break;
}
}
if (m==3)
{
if (ret==RE_OK)
{
if (strlen(nbuf)==0)
{
ret=RE_ERR;
}
else
{
sn[3]=atoi(nbuf);
if (sn[3] <= 255)
{
ret=RE_OK;
}
else
{
ret=RE_ERR;
}
}
}
}
else
{
if (m!=4)
{
ret=RE_ERR;
}
}
if (ret==RE_OK)
{
break;
}
else
{
continue;
}
}
if (ret==RE_OK)
{
sprintf(hostIP,"%u.%u.%u.%u",sn[0],sn[1],sn[2],sn[3]);
}
}