IP地址+子网掩码验证

时间:2015-07-28 05:06:44

标签: c#

在我的应用程序中,用户输入ip address + sub net mask,如下所示: 192.168.0.0/16或80.80.80.0/24我想验证它:

  1. 如果ip地址不是有效地址,则返回false。(它很简单 我可以用IPAddress.TryParse方法
  2. 来做到这一点
  3. 如果IP地址不是公共地址,则返回 假的。(192.168.0.0/16=false)
  4. 如果子网掩码无效(不在0到32之间)。
  5. 我是c#的新手,如果你告诉我验证IP地址的最佳方法,我真的很感激。 谢谢。

2 个答案:

答案 0 :(得分:2)

请尝试进行一些搜索,因为之前您的问题可能已经得到解答。

对于Q1,请参阅this stackoverflow article

对于Q2和Q3,分割输入字符串后很容易检查(如@ RPradeep'答案)

毕竟,我建议你找一个更好的第三方" C#IP地址库"。我认为您的要求是常用的,有人可能会做同样的事情。它比你自己做得更好,对吗?

<强>更新

对于Q2,仍有a stackoverflow article可以帮助你。

<强>更新

根据您的评论,我建议您采用另一种方式 - 如何列出您要返回的所有IP地址为false,并检查目标IP地址是否可以在列表中找到?

对于IPv4,codeproject article可以为您构建IP地址列表 - 方便。

答案 1 :(得分:0)

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

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

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

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