Ola, gostaria de saber se tem como eu pegar o endereço de gateway com o java, eu ja consegui pegar o ip o hostname, mas o gateway não. Consegui pegar o ip com o java.net agora como posso pegar o gateway dos principais sistemas operacionais, como windows 98SE 2000 XP 2003, Linux/Unix?
Pegar endereço de gateway
6 Respostas
Olá
- Modo simples:
Execute netstat -rn (também route print no Windows) e parseie o resultado para encontrar o IP ao lado (ou abaixo como desconfio que é no Linux) do Default Gateway
- Modo complexo (precisa de JNI):
a) No Linux:
Veja os fontes do netstat em …src/usr.bin/netstat/route.c
b) No Windows:
Vasculhe o MSDN que pode ser que encontre o local onde o Windows armazena esta informação
Eu faria pelo modo simples porque no Windows as coisa podem ficar bem escondidas. Se um fim de semana não tiver nada para fazer, descubra onde o Windows guarda o MAC Address da placa de rede.
[]s
Luca
Sim, tentei desta maneira, mas vou precisar trazer somente o endereço de gateway, com o que você passou teria que buscar de alguma maneira o endereço de gateway, da mesma maneira que com o ipconfig que mostra…teria uma solução para mim neste caso, com netstat -rn ou ipconfig para eu trazer em uma variavel o endereço do gateway?
Olá
A vantagem do netstat sobre o ipconfig é que funciona igual no Linux. Mais fácil do que isto impossível. Pegar o resultado que você jogou para um arquivo e fazer parse considerando as particularidades de cada língua é moleza.
Mas se você preferir, há o segundo caminho. Com certeza o Windows guarda esta informação em alguma estrutura. Boa sorte na busca.
[]s
Luca
hmm…como assim fazer parser? não seria eu caminhar o arquivo inteiro até achar o gateway? não entendi 
Olá
Correto, você tem razão. Usei o termo estrangeiro parse porque é de uso corrente e com uma palavra só dá para entender tudo isto que falou.
[]s
Luca
Agora, poderia me ajudar como caminhar pelo arquivo para encotra-lo? Pois consigo imprimir na tela o que tem no arquivo com:
package rede;
import <a href="http://java.io">java.io</a>.*;
public class Ler {
public static void main(String[] args) {
String line;
BufferedReader inReader = null;
try {
inReader = new BufferedReader(
new FileReader(“gateway.txt”));
} catch( FileNotFoundException e ) {
System.err.println("Não pode abrir gateway.txt "+ e);
System.exit(1);
}
try {
while((line = inReader.readLine())!= null) {
System.out.println(line);
}
inReader.close();
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
}