códig não compila

12 respostas
rjpepeu

Boa noite pessoal,

vi como sugestões para programas iniciais fazer um programa que testa o servidor enviando um ping para o mesmo, só que inicialmente estou tomando erro nesse código e não consigo entender porque, se alguém puder me dar uma ajudinha.

Só para informar ainda vou colocar IF abaixo dentro de um loop infinito para ficar testando enquato roda, assim saberei quando está no ar e quando está fora do ar( o servidor em questão).

import java.net.InetAddress;


public class PingaServidor {
public static void main(String[] args) {
	String servidor;
	
	private static void pingar(String Servidor){
		if(InetAddress.getByName(Servidor).isReachable(5000))
			System.out.println("Ping OK "+ Servidor);
			else
			System.out.println("Ping Falhou "+ Servidor);
		}
	
	pingar(servidor);
}
}

Desde já muito obrigado.

12 Respostas

Andre_Brito

A main por si só é uma função. Então você deve criar uma outra função (no seu caso, pingar) fora da main e, de dentro da main, chamar essa outra função. O que você fez foi criar uma função dentro da main. E você deve criar essa outra função fora da main.

public static void main(String[] args) {
    pingar("endereco do servidor");
}

private static void pingar(String endereco) {
    if(InetAddress.getByName(endereco).isReachable(5000))
        System.out.println("Ping OK "+ endereco);
    else
	System.out.println("Ping Falhou "+ endereco);

}
rjpepeu

Obrigado!!!

criei 2 classes uma com o metodo e outra que estância e chama o método da primeira.

Segue abaixo:

import java.io.IOException;
import java.net.InetAddress;


public class UtilPing {

		
	public void pingar(String Servidor) throws IOException, IOException{
		if(InetAddress.getByName(Servidor).isReachable(5000))
			System.out.println("Ping OK "+ Servidor);
			else
			System.out.println("Ping Falhou "+ Servidor);
		}
		

	
}
import java.io.IOException;


public class PingaServidor {
public static void main(String[] args) throws IOException {
	
	UtilPing serv = new UtilPing();  
	serv.pingar("www.google.com.br");
}
}

Valeu pela ajuda.

Eu tento pingar para o google só que dá falha não sei porque agora é tentar entender isso.

abs

rjpepeu

Fala pessoal,

alguém consegue entender porque esse código nunca funciona se o ping não for para o localhost?

Inclusive quando eu coloco 127.0.0.0(endereço do localhost) não funciona.

Se alguém puder me ajudar?

Valeu galera!!!

raposo.leandro

Tente usar como endereço para localhost 127.0.0.1

drigo.angelo

Tenta também com o ip do google (64.233.163.104)

rjpepeu

Eu nem tinha me dado conta que o ip que eu colocava como localhost estava errado… rsss (valeu meu camarada!!!)

Após ter funcionado com o 127.0.0.1, testei o ip do google(64.233.163.104) só que não funciona, isto é, só funciona para minha máquina. Qualquer IP externo que eu tente da falha no ping, só que no command o ping funciona perfeitamente.

Resumindo continuo boiando, estou procurando se eu descobrir de alguma forma eu coloco aqui o feed back, mas se alguém souber dá uma idéia aê!!!.

Valeu galera!!!

Abs

adriano_si

Cara… posso estar falando a maior besteira do mundo, mas seu server tem rota externa ?? Teu servidor está disponível na Web ??? Tenta acessar o IP de alguma máquina de tua rede interna (se tiveres alguma)…

Abs []

adriano_si

Falei a maior besteira do mundo sim... heuehueheuehue fiz o teste aqui e consegui pingar o Google com o IP que amigo acima passou...

public static void main(String[] args) {
        try {
            pingar("64.233.163.104");
        } catch (UnknownHostException ex) { ex.printStackTrace(); }
          catch (IOException ex) { ex.printStackTrace(); }
    }

    private static void pingar(String endereco) throws UnknownHostException, IOException {
        InetAddress ia = InetAddress.getByName(endereco);
        if (ia.isReachable(5000)) {
            System.out.println("Ping OK " + endereco);
            System.out.println("Host          : " + ia.getHostName());
            System.out.println("Canonical Host: " + ia.getCanonicalHostName());
        } else {
            System.out.println("Ping Falhou " + endereco);
        }
    }

Resultado...

Ping OK 64.233.163.104 Host : bs-in-f104.1e100.net Canonical Host: bs-in-f104.1e100.net
rjpepeu

Fala Adriano,

testei o ping com o seu código deixei o meu de lado… rsss

Mas infelizmente deu erro também, o que acho é que o firewall da máquina está bloqueado alguma coisa, tentei pingar para dentro da minha rede(no caso rede do trabalho e não tive sucesso).

Você usa windows ou linux?

Será que o maldito firewall do windows está bloqueando alguma coisa?

Abs e muito obrigado

rjpepeu

fala Galera!!!!!

Infelizmente não consegui resolver isso com o InetAddress, mas lendo algumas coisas na internet achei aqui mesmo no GUJ uma idéia de usar a Runtime e a Process, pois assim eu estaria usando o command da máquina(com certeza não funciona em todos os SO's, portanto deixa de ser portável.).

Enfim irei colocar aqui o código que fiz.

import java.io.IOException;
import java.util.Scanner;




public class UtilPing {

		Runtime r = Runtime.getRuntime();
		 
	public void pingar(String Servidor) {
		try {
			Process p = r.exec("Ping "+ Servidor+" -t");
			Scanner scan = new Scanner(p.getInputStream());
			String linha = "";
			
			while((linha = scan.nextLine()) != null) {
				if(linha.startsWith("Resposta de")){
					System.out.println(Servidor+" Ligado ---> " + linha);
				}
				if (linha.startsWith("Esgotado o tempo")){
					System.out.println(Servidor+" Desligado ---> " + linha);
				}
			
			}
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
		

	
}
import java.io.IOException;
import java.util.Scanner;


public class PingaServidor {
public static void main(String[] args) throws IOException {
	Scanner scan = new Scanner(System.in);
	
	UtilPing serv = new UtilPing();  
	serv.pingar(scan.next());
	}
}

Desde já muito obrigado pela ajuda que me deram!!!!

Ahnnn se alguém souber o porque da bosta do InetAddress não funcionar, me dá um toque.

Abs.

adriano_si

rjpepeu:
Fala Adriano,

testei o ping com o seu código deixei o meu de lado… rsss

Mas infelizmente deu erro também, o que acho é que o firewall da máquina está bloqueado alguma coisa, tentei pingar para dentro da minha rede(no caso rede do trabalho e não tive sucesso).

Você usa windows ou linux?

Será que o maldito firewall do windows está bloqueando alguma coisa?

Abs e muito obrigado

Cara, onde eu testei foi no Windows e realmente com o Firewall desligado… quando chegar em casa, vou testar no Linux e posto o resultado pra tí…

Realmente tá muito estranho esse erro…

Abs [] e boa sorte…

rjpepeu

Adriano,

pela Runtime e pela Process, eu consegui numa boa.

Abs

Criado 30 de dezembro de 2010
Ultima resposta 4 de jan. de 2011
Respostas 12
Participantes 5