如何在java或scala中获取本地主机网络接口
我试图在scala应用程序中获取我的机器的MAC地址。搜索时有几个结果,但它们都使用类似以下内容,包括如何在java或scala中获取本地主机网络接口,java,scala,Java,Scala,我试图在scala应用程序中获取我的机器的MAC地址。搜索时有几个结果,但它们都使用类似以下内容,包括InetAddress.getLocalHost()后跟NetworkInterface.getByInetAddress(…): 我的问题是结果最终为空: val localhost = InetAddress.getLocalHost println(s"lh: $localhost") val localNetworkInterface = NetworkInterface.getByIn
InetAddress.getLocalHost()
后跟NetworkInterface.getByInetAddress(…)
:
我的问题是结果最终为空:
val localhost = InetAddress.getLocalHost
println(s"lh: $localhost")
val localNetworkInterface = NetworkInterface.getByInetAddress(localhost)
println(s"lni: $localNetworkInterface")
>>lh: ubuntu/127.0.1.1
>>lni: null
这将检查每个接口,如果显示名称为eth0,则分配MAC地址。将eth0替换为需要MAC地址的接口的名称(可以使用
ifconfig
查看Linux上的接口-环回地址(localhost)没有硬件地址)
getByInetAddress
在我的计算机上具有相同的断开行为,但您可以使用getNetworkInterfaces
:
import java.net._
import scala.collection.JavaConverters._
NetworkInterface.getNetworkInterfaces.asScala map (_.getHardwareAddress) filter (_ != null)
您得到的是
null
,因为环回接口没有MAC地址(我已经编辑了我的答案以检查接口名称,您应该能够很容易地获得该名称)
import java.net._
import scala.collection.JavaConverters._
NetworkInterface.getNetworkInterfaces.asScala map (_.getHardwareAddress) filter (_ != null)