你如何列出网络上的所有 smb 服务器?

How do you list all smb servers on the network?

是否可以使用 jcifs 列出网络上所有可用的 smb 服务器?我在另一个 post 上尝试了将 smb:// 传递给 SmbFile 构造函数的建议,但这没有给我任何结果。而我能够通过 smb://username:password@machinename 并且效果很好。其他计算机可以毫无问题地找到 machinename,甚至另一个 Android 应用程序也可以使用 SMB 看到它。

服务器列表无法通过 SMB 协议本身获得。要接收这样的列表,客户端必须执行 LSA 和 SAMR 协议。两者都是 DCERPC 管道。 JCIFS 具有通用的 DCERPC 框架,但据我所知,它没有实现所需的 LSA 和 SAMR。替代 SMB 客户端:smbclient、NQE 和 jNQ 确实实现了这些调用。