Estou desenvolvendo uma aplicação que utiliza o Jpcap (http://netresearch.ics.uci.edu/kfujii/jpcap/doc/index.html) para analise de pacotes e estou com um problema. Quando tento listar as interfaces de rede por uma classe criada dentro de uma thread, não são listadas todas as interfaces que a minha maquina possui. Já quando crio esta mesma classe fora de uma thread e tento listar as interfaces, tudo ocorre normalmente.
Aqui vai um exemplo para que vocês entendam melhor:
public class ListaInterfaces {
private NetworkInterface[] interfaces;
public ListaInterfaces(){
interfaces = JpcapCaptor.getDeviceList();
}
public void lista(){
System.out.println("\n=========================================");
System.out.println("=============== INTERFACES ==============");
System.out.println("=========================================");
for(NetworkInterface i : interfaces){
System.out.println("\nNome:\t\t\t" + i.name);
System.out.println("Descricao:\t\t" + i.description);
System.out.println("Nome da Datalink:\t" + i.datalink_name);
System.out.println("Descricao da Datalink: \t" + i.datalink_description);
for(NetworkInterfaceAddress a : i.addresses){
System.out.println("IP:\t\t\t" + a.address.getHostAddress());
System.out.println("Broadcast:\t\t" + a.broadcast.getHostAddress());
System.out.println("SubNet:\t\t\t" + a.subnet.getHostAddress());
}
System.out.println("\n=========================================");
}
System.out.println("=========================================");
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
ListaInterfaces listaInterfaces = new ListaInterfaces();
listaInterfaces.lista();
}
});
}
}
Quando executo o main desta classe, não são listadas todas as interfaces. Agora se eu mudo o metodo main para o seguinte todas as interfaces aparecem:
public static void main(String args[]) {
ListaInterfaces listaInterfaces = new ListaInterfaces();
listaInterfaces.lista();
}
Alguem tem ideia de como consertar isto?