英文:
method in Java to get all IP subnet detail
问题
我有一个来自不同子网的IP列表,例如:
10.181.192.18 255.255.255.248
10.181.192.26 255.255.255.248
我想为这些IP生成所有的详细信息,例如网络、前缀(例如在这种情况下是/29),可能还有范围等。
我是否正确,Java没有这样的方法来生成这些详细信息?
英文:
I have a list of IPs from different subnets, e.g.:
10.181.192.18 255.255.255.248
10.181.192.26 255.255.255.248
I want to generate all IP details for such IPs, e.g. network, prefix (e.g. in such case is /29), maybe ranges etc.
Am I right that Java does not have such methods to generate such details?!
答案1
得分: 1
如果这些是4个IP地址,就不可能从中生成网络、网络掩码和子网范围。
如果它们是用于>此<计算机的IP地址,那么您可以使用NetworkInterface
API中的方法来查询接口及其绑定的InterfaceAddress
列表。InterfaceAddress
允许您检索前缀长度,然后您可以使用它来计算IP范围。
如果这些实际上是IP地址 + 子网掩码对(就像它们对我来说是*的),那么您已经拥有所需的信息。只需从子网掩码计算前缀长度,从IP和子网掩码计算网络范围。
我不知道任何Java SE API可以进行这些计算,但它们很简单。将IP地址和掩码转换为整数(或字节数组),计算位数,执行一些位操作,然后转换回标准表示法。
英文:
If those are 4 IP addresses, it is impossible to generate the network, network mask and subnet range from them.
If they are IP addresses for >this< computer, then you can use methods in the NetworkInterface
API to interrogate the interfaces and their bound InterfaceAddress
list. The InterfaceAddress
allows you to retrieve the prefix length which you can then use to compute the IP range.
If those are actually IP address + netmask pairs (as they appear to me to be) then you have the information you need already. It is simply a matter of computing the prefix length from the netmask and the network range from IP and netmask.
I'm not aware of any Java SE APIs that do the calculations, but they are straight-forward. Convert the IP addresses and masks to integers (or byte arrays), count bits, do some bitwise operations and convert back to the standard notation.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论