首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IP地址+子网掩码验证

问IP地址+子网掩码验证
EN

Stack Overflow用户
提问于 2015-07-28 05:06:44
回答 2查看 4.9K关注 0票数 1

在我的应用程序中,用户输入ip地址+子网掩码,如下所示: 192.168.0.0/16或80.80.80.0/24,我想这样验证它:

  1. 如果ip地址不是有效地址,则返回false。(这很简单,我可以使用IPAddress.TryParse方法)。
  2. 如果ip地址不是公共地址,则返回false。(192.168.0.0/16=false)
  3. 如果子网掩码无效。(不是0到32之间)。

我是c#的新手,如果你告诉我验证ip地址的最佳方法,我真的很感激。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-28 05:27:44

请尝试做一些搜索,因为你的问题可能已经回答了。

关于Q1,请参考这篇堆叠溢出的文章。

对于Q2和Q3,可以很容易地在拆分输入字符串(如@RPradeep的答案)后检查它。

毕竟,我建议你找到一个更好的第三方"C# IP地址库“。我认为你的要求是很常见的,以前也可能有人这样做。总比你自己再做一次好,对吧?

更新

对于Q2来说,堆叠的文章仍然可以帮助你。

更新

根据您的评论,我向您推荐另一种方法--列出您希望返回的所有IP地址,并检查目标IP地址是否可以在列表中找到?

对于IPv4,有一个代码项目文章可以以简单的方式为您构建IP地址列表。

票数 2
EN

Stack Overflow用户

发布于 2015-07-28 05:20:33

检查字符串是否包含":",//这是IPv6

如果字符串以fd开头,则返回false

否则:您可以解析带有拆分的字符串。//这是用于IPv4 1的。如果字符串以10开头,则返回false 2。如果字符串以172.16开头,子网为12,则返回false 3。如果以192.168开头,子网为16,则返回false 2。

最后,拆分/查看第二部分并解析Integer。如果它不在0和32的范围内,则返回false。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31667745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档