jiqun.c 908 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "includes.h"
  2. char isIPAddress(char *addr);
  3. //判断地址是否为IP,否则为域名
  4. char isIPAddress(char *addr)
  5. {
  6. short i,len,num;
  7. char buf[10];
  8. len=strlen(addr);
  9. //1、如果长度小于7则认为是域名
  10. if(len<7) return 0;
  11. //2、如果检测有非数字同时非点,则认为是域名
  12. for(i=0;i<len;i++){
  13. if((addr[i] <'0' || addr[i] > '9') && addr[i] != '.') return 0;
  14. }
  15. //3、如果有大于3个点,则认为是域名
  16. num=0;
  17. for(i=0;i<len;i++){
  18. if(addr[i] == '.'){
  19. if(++num>3) return 0;
  20. }
  21. }
  22. //4、如果有两个点是连续的,则认为是域名
  23. num=0xff;
  24. for(i=0;i<len;i++){
  25. if(addr[i] == '.'){
  26. if(num==i) return 0;
  27. num=i+1;
  28. }
  29. }
  30. //5、如果有大于255的数字出现,则认为是域名
  31. num=0;
  32. memset(buf,0,sizeof(buf));
  33. for(i=0;i<len;i++){
  34. if(addr[i]>='0' && addr[i]<='9'){
  35. if(num<sizeof(buf)) buf[num++]=addr[i];
  36. if(atoi(buf)>255) return 0;
  37. }else if(addr[i]=='.'){
  38. num=0;
  39. memset(buf,0,sizeof(buf));
  40. }
  41. }
  42. return 1;
  43. }