【发布时间】:2012-02-03 01:05:45
【问题描述】:
我的操作系统是 CentOS 6。在我的 /etc/sysconfig/network-scripts/ifcfg-eth0 文件中,我指定了网络接口 "NAME" 到 "foo"(假设)。
NAME=foo
我希望能够从 java 中获取该接口 "NAME"。我尝试了以下方法,但没有结果:
for (Enumeration nis = NetworkInterface.getNetworkInterfaces(); nis.hasMoreElements();) {
NetworkInterface ni = nis.nextElement();
System.out.println(ni.getDisplayName() + " " + ni.getName());
}
它显示相同的东西:
eth0 eth0
谁能告诉我是否有可能在 java 中获取网络接口属性NAME 的值?
谢谢。
注意:当指定NAME=foo时,屏幕右上角的网络面板中该接口的名称为foo。
【问题讨论】:
-
您是否在将网络接口名称设置为新值后尝试重新启动网络?
-
@KohányiRóbert 是的。但据我所见,NetworkInterface 类的 getName() 和 getDisplayName() 方法没有任何具有 NAME 属性的东西。
-
是的,这些方法可能没有指定它们是否返回 stuff 形式的 *nix 特定配置文件的键值,因为它们试图独立。此外,根据定义
NetworkInterface.getName()将/应该返回网络接口 的名称。在你的情况下,我猜,NAME不是你的网络接口的名称,而是你标记eth0的标签,它是你的 real 网络接口,它的 real i> 名称。 (虽然我不是 *nix 专家,而且我对网络接口及其名称没有足够的了解。)
标签: java networking centos network-interface