如何判断IP地址是不是合法的

llf_hust 2005-08-31 05:27:18
char p[256] = "192.168.0A.1";
int IsIp(char *p)//如何写一个算法判断给定的IP地址是不是合法的呀,大家给个思想呀
{
}
...全文
1412 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
XBox360 2005-08-31
  • 打赏
  • 举报
回复
我之前写过一个,但是总觉得不够好

先检查除了是否有‘.’及数字以外的字符
得到‘.’的个数
再检查每个‘.’之间的数是否在0-255之间
xiaocai0001 2005-08-31
  • 打赏
  • 举报
回复
这是 tarsen(tarsen) 写的一个IP检测
详见http://community.csdn.net/Expert/topic/4192/4192045.xml?temp=.6107447

也许对你有点参考价值

bool Cip::CipCheckIp(char *str)//a rough check
{
int dot_count = 0;
int num_count = 0;
int num_val = 0;
while((*str))
{
if((*str) != '.')
{
if((*str) <= '9' && (*str) >= '0')
{
++ num_count;
num_val = num_val * 10 + (*str) - '0';
}
else
return false;
}
else
{
++ dot_count;
if(num_count < 1 || num_count > 4 || num_val < 0 || num_val >255)
//check if the current segment is 1~3 numbers
return false;
num_count = 0;
num_val = 0;
}
++ str;
}
if(dot_count != 3)
return false;
return true;
}
foochow 2005-08-31
  • 打赏
  • 举报
回复
扫描数据,如果存在0---9和'.'之外的字符则不合法,将数据按'.'进行分割,如果分割结果不是四段,则不合法.如果四段中的数据均小于256,则是合法的...
xiaocai0001 2005-08-31
  • 打赏
  • 举报
回复
你得首先明白,哪些形式的IP是不合法的

常见的如:
IP地址中含有除 . 0-9 这11个字符以外的字符
IP长度不对 有效IP长度在7-15个字符
IP地址分节错误 IP地址中应该有三个 .
IP地址范围错误 每节的数字应该在 0-255之间
... ...

把这些东西想清楚了,然后检测起来,才是有的放矢~~~

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧