有多种获取机器的网络适配器和相关信息的方法,例如Sigar和java.net的getNetworkInterfaces()。但是,无论使用哪种方法,我都无法确定某个适配器是否是无线的(除非名称/描述明确表明是无线的)。

有什么方法可以通过代码确定这一点吗? (我希望能够在Windows和Linux中都这样做,但是我愿意处理系统特定的解决方案)。

最佳答案

编辑:删除了不相关的部分

也许您可以使用JNI(Java本机接口)来调用C函数,该函数使用C获得此标志...这应该是可能的(尽管可能代码变得不可移植)

编辑:对于linux,我发现以下内容。下载了无线工具的源代码,包括iwconfig。它们包含的库iwlib.c只是从/ proc / net / wireless或/ proc / net / dev中提取接口的名称

您可以从here(来自Fedora)获得资源。当库从标准化文件系统的路径提取数据时,您唯一需要的就是内核对procfs的支持。

现在我只能将您引至文件“ iwlib.c”,功能

void iw_enum_devices(int skfd, iw_enum_handler fn, char * args[], int count)


我不知道这些参数,但是对源代码进行了注释。也许您必须将通过Java获得的列表与通过此JNI黑客获得的列表进行比较...

猜想完成一项“小任务”需要做很多工作;希望你能找到办法...

问候

关于java - 如何确定网络适配器是否是无线的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1196824/

10-09 02:59