Descobrir se um host esta ligado

4 respostas
A

Estou tentando validar se um determinado host esta ligado fazendo uma conexao em uma determinada porta que eu sei que estará ativada. Estou utilizando o metodo isConnected() da classe Socket, no entando o mesmo so esta me retornando falso mesmo quando a maquina esta ligada.

Alguem tem alguma outra sugestao do q pode ser feito ?

4 Respostas

J

A classe InetAddress tem um metodo isReachable(), veja:

http://java.sun.com/j2se/1.5.0/docs/api/java/net/InetAddress.html#isReachable(int)

A

Estou usando o seguinte trecho do codigo para verificação e simplesmente quando mando imprimir a saida do booleano nada esta sendo impresso.

public boolean maquinaEstaAtiva(String host){

boolean isAtiva = false;

try {

Socket sock = new Socket(host, 7);

isAtiva = sock.getInetAddress().isReachable(500);

try {

Thread.sleep(1000);

} catch (InterruptedException ex) {

ex.printStackTrace();

}

System.out.println("Valor do isAtiva: " + isAtiva);
} catch (UnknownHostException ex) {            
        isAtiva = false;
    } catch (IOException ex) {           
        isAtiva = false;
    }
    
    return isAtiva;
}

“jairelton”:
A classe InetAddress tem um metodo isReachable(), veja:

http://java.sun.com/j2se/1.5.0/docs/api/java/net/InetAddress.html#isReachable(int)

E

Olá brother,

acho que aqui tem algo pra ajudar:

http://java.sun.com/developer/JDCTechTips/2005/tt0816.html

E

E ae Alfredo, eu construi essa aplicação pra vc dar uma olhada e ter uma idéia melhor de como fazer isso, blz?

Abraço

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class ProcuraHost extends JFrame
{
private static final long serialVersionUID = 1L;
private String[] hosts = {"vergueiro", "yahoo.com", "ig.com.br", "google.com.br", "192.168.10.253", "192.168.10.60", "192.168.10.184"};
private JTextArea taHostsEncontrados = null;
private JPanel pnJSroll = null;
private JScrollPane jsTextArea = null;

protected int w = 500;
protected int h = 400;

	public ProcuraHost() throws IOException
	{
		super("Status dos Hosts na Rede pesquisada");
		configGUI();
		procuraHosts(hosts);
	}
	
	private void configGUI()
	{
		taHostsEncontrados = new JTextArea();		
		taHostsEncontrados.setEditable(false);
		taHostsEncontrados.setText("\t\tResultados da Pesquisa de Status: \n\n");
				
		jsTextArea = new JScrollPane(taHostsEncontrados);
		
		pnJSroll = new JPanel();
		pnJSroll.setLayout(new BorderLayout());
		pnJSroll.add(jsTextArea, BorderLayout.CENTER);
		
		Container layout = getContentPane();
		layout.setLayout(new BorderLayout());
		
		layout.add(pnJSroll);
		
		pack();
		setSize(w, h);
		setResizable(false);
		dimensionScreen();
	}
	
	private void procuraHosts(String[] hosts) throws IOException
	{		
		for (String name: hosts)
		{
	         try
	         {
	           InetAddress address = InetAddress.getByName(name);
	           taHostsEncontrados.append("Nome: " + address.getHostName() + "\n");
	           taHostsEncontrados.append("Endereço IP: " + address.getHostAddress() + "\n");
	           
	           if(address.isReachable(5000) == true)
	             taHostsEncontrados.append("Status: On-line\n\n");
	           else
	        	 taHostsEncontrados.append("Status: Off-line\n\n");
	         }
	         catch (UnknownHostException e)
	         {
	        	 taHostsEncontrados.append("Host não disponível: " + name  + "\n\n");
	         }
	         catch (IOException e)
	         {
	        	 taHostsEncontrados.append("Host não disponível: " + name  + "\n\n");
	         }
	    }
	}
	
	private void dimensionScreen()
	{
		  Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
	   	  Dimension size = getSize();
	   	
	   	  if(size.width > screen.width)
	   	     size.width = screen.width;
	   	  if(size.height > screen.height)
	   	     size.height = screen.height;
	   	
	   	  setLocation
	   	  (
	   	     ((screen.width - size.width) / 2),
	   	     ((screen.height - size.height) / 2)
	   	  );
	       setVisible(true);
	}
}
Criado 19 de dezembro de 2006
Ultima resposta 18 de jan. de 2007
Respostas 4
Participantes 3