dfa*_*dfa 26
localhost接口的第一个地址的网络掩码:
InetAddress localHost = Inet4Address.getLocalHost();
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localHost);
networkInterface.getInterfaceAddresses().get(0).getNetworkPrefixLength();
Run Code Online (Sandbox Code Playgroud)
更完整的方法:
InetAddress localHost = Inet4Address.getLocalHost();
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localHost);
for (InterfaceAddress address : networkInterface.getInterfaceAddresses()) {
System.out.println(address.getNetworkPrefixLength());
}
Run Code Online (Sandbox Code Playgroud)
/ 24表示255.255.255.
SE6中的java.net.InterfaceAddress有一个getNetworkPrefixLength方法,顾名思义,它返回网络前缀长度.如果您希望以该格式使用子网掩码,则可以从中计算子网掩码.java.net.InterfaceAddress支持IPv4和IPv6.
多个网络应用程序API中的getSubnetMask()以java.net.InetAddress形式返回指定IP地址的子网掩码(本地系统可能有许多本地IP地址)
小智 5
我找到:
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localHost);
Run Code Online (Sandbox Code Playgroud)
要获得ipv6的子网掩码,我们可以使用:
networkInterface.getInterfaceAddresses().get(0).getNetworkPrefixLength();
Run Code Online (Sandbox Code Playgroud)
要获得ipv4的子网掩码,我们可以使用:
networkInterface.getInterfaceAddresses().get(1).getNetworkPrefixLength();
Run Code Online (Sandbox Code Playgroud)
您可以将获得的值转换为标准文本格式,如下所示:
short prflen=...getNetworkPrefixLength();
int shft = 0xffffffff<<(32-prflen);
int oct1 = ((byte) ((shft&0xff000000)>>24)) & 0xff;
int oct2 = ((byte) ((shft&0x00ff0000)>>16)) & 0xff;
int oct3 = ((byte) ((shft&0x0000ff00)>>8)) & 0xff;
int oct4 = ((byte) (shft&0x000000ff)) & 0xff;
String submask = oct1+"."+oct2+"."+oct3+"."+oct4;
Run Code Online (Sandbox Code Playgroud)