|
发表于 2004-10-24 10:28:33
|
显示全部楼层
来自 中国–新疆–乌鲁木齐
看这一段
public ip_to_number(userip[16]){ //找到这个函数
new ipb1[12],ipb2[12],ipb3[12],ipb4[12]
new nipb1,nipb2,nipb3,nipb4
new uip[16]
new ip
copy(uip, 16, userip)
while(replace(uip, 16, ".", " ")){}
parse(uip, ipb1, 12, ipb2, 12, ipb3, 12, ipb4, 12)
nipb1 = str_to_num(ipb1) //这是ip第一段以192.168.10.11为例返回192
nipb2 = str_to_num(ipb2) //这是ip第二段以192.168.10.11为例返回168
nipb3 = str_to_num(ipb3) //这是ip第三段以192.168.10.11为例返回10
nipb4 = str_to_num(ipb4) //这是ip第四段以192.168.10.11为例返回11
ip=nipb1*16777216 + nipb2*65536 + nipb3*256 + nipb4 //这里是所有地址之和具体可以看 http://www.dt-club.net/showthread.php?t=15893
文章内容,他使用这种方法实现的。我这里没有使用,这个变量。
return nipb3 //这里我返回了ip的第三部 你可以修改为 return nipb2 就是第二段了。
}
一般局域网只需要判断ip地址的第二和第三段地址,一般第一段是设定好的比如10,172,192等等,第四段一般是用户地址所以主要判断,2、3位地址,我这里还有个办法,参照了下面的算法
ip=nipb1*16777216 + nipb2*65536 + nipb3*256 + nipb4
这种算法比较通用,而且是标准。我的方法比较直观
ip= nipb2*1000 + nipb3
这样返回二三位地址之和,比如192。168。10。11的2、3位是168。10
结果是168*1000+10=168000+10=168010,这样程序比较好写。你可以试一下 |
|