JCIFS, Android и getbyname - PullRequest
       41

JCIFS, Android и getbyname

0 голосов
/ 22 марта 2011

Хорошо, попробовал следующий бит кода:

import jcifs.netbios.NbtAddress;
...

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

И это исключение. Есть идеи? Я попробовал это с парой названных машин в локальной сети

Ответы [ 3 ]

0 голосов
/ 03 апреля 2011

Я использовал эмулятор.Когда я запустил приложение на реальном оборудовании, проблема исчезла.

0 голосов
/ 17 октября 2014

Проблема в том, что разрешение имен NBT работает путем отправки широковещательных пакетов UDP по локальной сети, а эмулятор живет в собственной виртуальной локальной сети, подключенной к вашему хост-компьютеру только через виртуальный маршрутизатор NAT. Широковещательные пакеты не пересекаются между различными подсетями, поэтому ничего в вашей локальной сети не видит запрос имени.

У меня такая же проблема. Единственные идеи для ее решения, которые я знаю:

  • Настройте сервер WINS в локальной сети и укажите на нем свое приложение с помощью свойства jcifs.netbios.wins ,

или

  • Создайте файл LMHOSTS в файловой системе эмулятора, содержащий имена и IP-адреса хостов в вашей локальной сети, к которым вы хотите иметь доступ, и укажите в нем свое приложение с помощью jcifs.netbios.lmhosts собственность.

Если бы на эмуляторе можно было запустить что-то, что могло бы послужить главным браузером NetBIOS, возможно, существует третье решение, но я еще недостаточно исследовал это.

Решение LMHOSTS не является идеальным, потому что вы (AFAIK) не можете просматривать рабочие группы и хосты. Это должно работать с сервером WINS, но я не пробовал.

0 голосов
/ 22 марта 2011

Я полагаю, у вас нет разрешения ИНТЕРНЕТ в вашем манифесте?

...