12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #include "includes.h"
- char isIPAddress(char *addr);
- //判断地址是否为IP,否则为域名
- char isIPAddress(char *addr)
- {
- short i,len,num;
- char buf[10];
-
- len=strlen(addr);
- //1、如果长度小于7则认为是域名
- if(len<7) return 0;
- //2、如果检测有非数字同时非点,则认为是域名
- for(i=0;i<len;i++){
- if((addr[i] <'0' || addr[i] > '9') && addr[i] != '.') return 0;
- }
- //3、如果有大于3个点,则认为是域名
- num=0;
- for(i=0;i<len;i++){
- if(addr[i] == '.'){
- if(++num>3) return 0;
- }
- }
- //4、如果有两个点是连续的,则认为是域名
- num=0xff;
- for(i=0;i<len;i++){
- if(addr[i] == '.'){
- if(num==i) return 0;
- num=i+1;
- }
- }
- //5、如果有大于255的数字出现,则认为是域名
- num=0;
- memset(buf,0,sizeof(buf));
- for(i=0;i<len;i++){
- if(addr[i]>='0' && addr[i]<='9'){
- if(num<sizeof(buf)) buf[num++]=addr[i];
- if(atoi(buf)>255) return 0;
- }else if(addr[i]=='.'){
- num=0;
- memset(buf,0,sizeof(buf));
- }
- }
- return 1;
- }
|