JCIFS,Android和getbyname

时间:2011-03-22 01:01:13

标签: android netbios jcifs

好吧,尝试了下面的代码:

import jcifs.netbios.NbtAddress;
...

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

它抛出异常。 有任何想法吗?我已经尝试过使用LAN上的几台命名机器

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

,或者

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

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

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