Java - Print random IP addresses in a given range
我试图从给定范围获取随机IP地址。
EX:startIp ="192.168.1.0"; endIp ="192.168.2.255"
我尝试将范围转换为cidr并使用SubnetUtils获取cidr列表的randomIp,但没有运气。
是否有任何有效的方法从给定的ip-range或api生成随机ip可以做到这一点?
提前致谢。
您可以按照以下步骤实现:
将两个IP转换为数字值
1 2
| InetAddress i = InetAddress. getByName(IPString );
int intRepresentation = ByteBuffer. wrap(i. getAddress()). getInt(); |
在限制之间生成随机
1
| r.nextInt(High-Low) + Low; |
将结果转换回数字到IP
-
这种方法工作正常,直到最大128.255.255.255。 为了保持其返回的负值并导致低于此值:Exception in thread"main" java.net.UnknownHostException: -847933385 at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) at java.net.InetAddress$2.lookupAllHostAddr(Unknown Source) at java.net.InetAddress.getAddressesFromNameService(Unknown Source) at java.net.InetAddress.getAllByName0(Unknown Source) at java.net.InetAddress.getAllByName(Unknown Source) .....
-
@ Forece85转换为long而不是看stackoverflow.com/questions/10087800/…