Pegar endereço de gateway

6 respostas
T

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?

6 Respostas

Luca

Olá

  1. 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

  1. 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

T

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?

Luca

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

T

hmm…como assim fazer parser? não seria eu caminhar o arquivo inteiro até achar o gateway? não entendi :frowning:

Luca

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

T

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());

}

}

}
Criado 13 de julho de 2006
Ultima resposta 14 de jul. de 2006
Respostas 6
Participantes 2