Domanda

Bene, ho provato il seguente bit di codice:

import jcifs.netbios.NbtAddress;
...

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

E lancia quell'eccezione. Qualche idea? L'ho provato con un paio di macchine nominate sulla LAN

È stato utile?

Soluzione 2

Stavo usando l'emulatore. Quando ho eseguito l'app su hardware reale, il problema è scomparso.

Altri suggerimenti

Immagino che tu non abbia il permesso di Internet nel tuo manifest?

Il problema è che la risoluzione del nome NBT funziona inviando pacchetti di trasmissione UDP sulla LAN e l'emulatore vive sulla propria LAN virtuale, collegata al tuo PC host solo da un router NAT virtuale. I pacchetti di trasmissione non si incrociano tra diverse sottoreti, quindi nulla sulla tua LAN vede la query del nome.

Ho lo stesso problema. Le uniche idee per risolverlo che conosco sono:

  • Imposta un server Wins sulla tua LAN e punta la tua app con il jcifs.netbios.wins proprietà,

o,

  • Crea un file LMHOSTS nel filesystem dell'emulatore, contenente i nomi e gli IP degli host sulla tua LAN che si desidera essere in grado di raggiungere e puntare la tua app con il jcifs.netbios.lmhosts proprietà.

Se fosse possibile eseguire qualcosa sull'emulatore che potrebbe fungere da browser Master Netbios, potrebbe esserci una terza soluzione, ma non l'ho ancora studiato abbastanza.

La soluzione LMHOSTS non è l'ideale, perché non (AFAIK) puoi navigare per gruppi di lavoro e host. Questo dovrebbe funzionare con un server Wins, ma non l'ho provato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top