求一个效率的IP地址的算法 (200分)

  • 主题发起人 主题发起人 Avalon
  • 开始时间 开始时间
A

Avalon

Unregistered / Unconfirmed
GUEST, unregistred user!
给一个IP地址 如192.168.0.1 和一个数量 如10000
要求 自192.168.0.1 按位递增生成新的IP地址并符合IP地址的规则

A、 网 络 地 址 必 须 唯 一。
B、 网 络 ID 不 能 以 数 字 127 开 头。 在 A 类 地 址 中, 数 字 127 保 留 给 内 部 回 送 函 数。
C、 网 络 ID 的 第 一 个 8 位 组 不 能 为 255。 数 字 255 作 为 广 播 地 址。
D、 网 络 ID 的 第 一 个 8 位 组 不 能 为 "0"。 "0&quot
表 示 该 地 址 是 本 地 宿 主 机, 不 能 传 送。

求一个效率的算法 循环就免了 最好是java版本的
 
在winsock单元文件中有两个对ip地址进行处理的,inet_addr,inet_ntoa,第一个是把ip地址转换成整数,第二个是第一个的逆处理,那么你可以先转成整数,然后加1,再转换成ip地址,对转换出来的ip地址进行你所需要的规则判断。这个不想循环,那是不可能的。要是不想循环,那就只有这样处理了,比如192.168.0.***这一段,那么0和255不能用,把这两个除去,那就是254个ip地址,然后当满了后,就是192.168.1.***,这个同样的道理,你看看10000除以254商是多少,余数是多少,这样可以了吧。如果你说的不循环,我不知道你怎么对ip地址是否符合你的规则进行判断了。
 
就是一个DWORD的四个字节么
分别取出来进行处理
 
后退
顶部