俺是新来的 发表于 2004-10-23 21:36:14

diablo1999兄请进来一下。

俺也是局域网的,我想问一下,如果我想先判定第二个IP段,然后根据第二个IP段不同再分别判定来自哪里,那源码怎么改呢?
请给我说一下,偶比较菜,没改成功,多谢了。

diablo1999 发表于 2004-10-24 10:28:33

看这一段

public ip_to_number(userip){          //找到这个函数
new ipb1,ipb2,ipb3,ipb4
new nipb1,nipb2,nipb3,nipb4
new uip
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,这样程序比较好写。你可以试一下
页: [1]
查看完整版本: diablo1999兄请进来一下。