怎么判断一个IP地址是否在规定范围内

主  题:  怎么判断一个IP地址是否在规定范围内
作  者:  AndersJackie (Anders)  
等  级:  ^
信 誉 值:  100
所属论坛:  .NET技术 C#
问题点数:  20
回复次数:  8
发表时间:  2003-9-28 15:53:03

怎么判断一个IP地址是否在规定范围内,如111.111.111.2111.111.111.1 - 111.111.113.21



回复人: kuangren(今天逃课~) ( 三级(初级)) 信誉:100 2003-9-28 16:26:24 得分:0

用正则表达式判断啊,在csdn里面有~你search下就可以找到了

回复人: eplox(090-7523-38**) ( 一级(初级)) 信誉:100 2003-9-28 16:35:05 得分:0

我也刚开始学C#不久,我想是不是可以先将地址分割,然后在比较.
string [] myStr;
myStr = textbox.Text.Trim().Split('.');
然后用

Int.Parse(myStr[i]) 同你的范围进行比较
例如;
Int.Parse(myStr[i])>111 && Int.Parse(myStr[i])<222

回复人: eplox(090-7523-38**) ( 一级(初级)) 信誉:100 2003-9-28 16:36:40 得分:0

对了,用正则表达式也许更简单一些

回复人: changezhong(小刀) ( 二级(初级)) 信誉:100 2003-9-28 17:25:35 得分:0

用正则表达式一般是验证输入的正确性,例如验证输入是否为IP
对输入范围的验证建议采用 eplox(Sam) 的方法,不过逻辑写的不全
如果给了一个范围111.111.111.1 - 111.111.113.21,这样写

string [] myStr;
myStr = textbox.Text.Trim().Split('.');
if(Int.Parse(myStr[2])<111 && Int.Parse(myStr[2])>113)
    MessageBox("超出范围")
if(Int.Parse(myStr[3])<1 && Int.Parse(myStr[3])>21)
    MessageBox("超出范围")

原则是从高位到低为比较

回复人: AndersJackie(Anders) ( 一级(初级)) 信誉:100 2003-9-28 17:32:41 得分:0

通用一些的,范围不是特别具体

回复人: chestnuts(c# Sharp) ( 四级(中级)) 信誉:100 2003-9-28 17:40:14 得分:0

???
不明白楼上说的通用是什么意思~

回复人: eplox(090-7523-38**) ( 一级(初级)) 信誉:100 2003-9-28 17:54:34 得分:0

伙计,你得自己动手啊,把上面的内容整理一下,自己写一个BOOL函数,把用户输入的IP 和开始IP已及结束IP作为3个参数传进去,然后返回TRUE 或FALSE 不就行了吗,以后你可以在程序的任何地方随时的调用它!
这还不通用吗?

回复人: changezhong(小刀) ( 二级(初级)) 信誉:100 2003-9-28 18:10:14 得分:20

不好意思,我试了一下,我的方法好象不行
最好的方法就是将IP全部转化为16进制,然后连起来,然后比较,例:
IPfrom=111.111.111.1=6F.6F.6F.1
连起来6F6F6F01转化为十进制1869573889
IPTo方法类似
然后比较大小

该问题已经结贴 ,得分记录: changezhong (20)、

Contributors: FHL