搜索
查看: 1460|回复: 1

diablo1999兄请进来一下。

[复制链接]
发表于 2004-10-23 21:36:14 | 显示全部楼层 |阅读模式 来自 中国–北京–北京
俺也是局域网的,我想问一下,如果我想先判定第二个IP段,然后根据第二个IP段不同再分别判定来自哪里,那源码怎么改呢?
请给我说一下,偶比较菜,没改成功,多谢了。
发表于 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,这样程序比较好写。你可以试一下
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表