0

好吧,尝试了以下代码:

import jcifs.netbios.NbtAddress;
...

              try{
                  NbtAddress addr = NbtAddress.getByName("Base");
              }catch (UnknownHostException e){}
...

它抛出了那个异常。有任何想法吗?我已经在 LAN 上的几台命名机器上进行了尝试

4

3 回答 3

0

我用的是模拟器。当我在真实硬件上运行应用程序时,问题就消失了。

于 2011-04-03T19:32:36.980 回答
0

问题是 NBT 名称解析通过在 LAN 上发送 UDP 广播数据包来工作,而模拟器位于其自己的虚拟 LAN 上,仅通过虚拟 NAT 路由器连接到您的主机 PC。广播数据包不会在不同的子网之间交叉,因此您的 LAN 上没有任何内容可以看到名称查询。

我也有同样的问题。我知道解决它的唯一想法是:

  • 在您的 LAN 上设置 WINS 服务器,并使用jcifs.netbios.wins属性将您的应用程序指向它,

或者,

  • 在模拟器的文件系统中创建一个 LMHOSTS 文件,其中包含您希望能够访问的 LAN 上主机的名称和 IP,并使用jcifs.netbios.lmhosts属性将您的应用程序指向它。

如果有可能在模拟器上运行可以用作 NetBIOS 主浏览器的东西,可能会有第三种解决方案,但我还没有对此进行足够的研究。

LMHOSTS 解决方案并不理想,因为您 (AFAIK) 无法浏览工作组和主机。这应该适用于 WINS 服务器,但我还没有尝试过。

于 2014-10-17T15:29:39.160 回答
0

我猜您的清单中没有 INTERNET 权限?

于 2011-03-22T01:01:48.557 回答