Ping com Java [era:Alguem pode me ajudar...]

13 respostas
Rodrigues-J

Estou tentandofazer um programa para pingar, me passarão esse mais esta dando erro na linha sete não sei o que pode ser, alguem pode me ajudar!

import java.io.*;
  import java.net.*;
  
  public class PseudoPing {
    public static void main(String args[]) {
      try {
        Socket t = new Socket(args[0], 7);
        DataInputStream dis = new DataInputStream(t.getInputStream());
        PrintStream ps = new PrintStream(t.getOutputStream());
        ps.println("Hello");
        String str = dis.readLine();
        if (str.equals("Hello"))
          System.out.println("Alive!") ;
        else
          System.out.println("Dead or echo port not responding");              
        t.close();
        }
      catch (IOException e) {
        e.printStackTrace();}
        }
       }

13 Respostas

furutani

Olá
Qual é o erro?

Rafael_Nunes

Três considerações:

-Coloque seus códigos entre as tags [ code] [/ code] para uma melhor visibilidade e organização do fórum.

-Coloque títulos mais descritivos nos tópicos que criar, assim facilita um pouco a quem for lhe ajudar.

-Qual o erro que está lhe retornando?

Rodrigues-J

Foi mal, faleu pelo toque mais é pq eu sou novo aqui no forum, mais vamo lá

cara esta dando esse erro!!

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at PseudoPing.main(PseudoPing.java:7)

Rafael_Nunes

Sem problemas, as dicas são somente para lhe alertar de algumas boas práticas aqui do fórum.

Em relação ao problema:
Você está passando uma String com o endereço do host na hora da execução?
Provavelmente ele não está achando o arg[0] na hora de instanciar o Socket

Rodrigues-J

Cara nesse codigo que me passaram no local que tem
como etava …
String str = is.readLine();
como ficou depois que eu modifiquei…
String str = dis.readLine();

pois achei que estava relacionado ao objeto que se encontra no codigo.

Rafael_Nunes

Seu problema esta na hora de criar a instância do Socket na linha 7. Você precisa passar uma String com o endereço do host como argumento na hora da execução do programa.

Rodrigues-J

Tbm achei isso, mais não achei uma solução!!!

pode me dar um toque!?

Rafael_Nunes

java PseudoPing ipDoServidor
(Isso considerando que você tem um server socket escutando neste servidor)

Outra sugestão pra você testar um ping:

String ip = "127.0.0.1";
Process p = Runtime.getRuntime().exec("ping -n 1 " + ip);
int status = p.waitFor();
System.out.println(ip + " is " + (status==0 ? "alive" : "dead"));
Rodrigues-J

Cara valeu!!!

so uma coisa tem como ver o ping tipo:

no Ruindows
Resposta de 200.221.2.45:bytes=32 tempo=51ms Tempo de vida=51
Resposta de 200.221.2.45:bytes=32 tempo=51ms Tempo de vida=51
Resposta de 200.221.2.45:bytes=32 tempo=52ms Tempo de vida=51

Se tiver melhor ainda!!!

Rafael_Nunes

De uma olhada na documentação da classe process, ela retorna pra você a saída do console, mais ou menos dá pra fazer:

InputStream in = p.getInputStream();
int line;
byte saida[] = new byte[400];
int count = 0;
		
  while((line = in.read()) != -1){
      saida[count] = (byte)line;
      count++;
  }

System.out.write(saida);
Rodrigues-J

Vlw, Brother…

vou tentar aqui

…Fui…

muito obrigado e vlw pelas dicas do forum aliais que foi que foi que renomeou para Ping com java

vlw

Rodrigues-J

cara deu um erro:

InputStream in = p.getInputStream();

mais inpecificamente que objeto é esse p.getInputStream();

correainfo

Bom Rodrigues eu coloquei esse codigo aki e esta funcionando bom vou postar o codigo

package ping;

import java.io.IOException;
import java.io.InputStream;

public class Ping {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		 String ip = "Coloque o IP aki";
		    Process p = null;
			try {
				p = Runtime.getRuntime().exec("ping -n 1 " + ip);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		    int status = 0;
			try {
				status = p.waitFor();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		    System.out.println(ip + " is " + (status==0 ? "alive" : "dead"));
		    
		    InputStream in = p.getInputStream();
		    int line;
		    byte saida[] = new byte[400];
		    int count = 0;
		    		
		      try {
				while((line = in.read()) != -1){
				      saida[count] = (byte)line;
				      count++;
				  }
			} catch (IOException e) {
				e.printStackTrace();
			}
		    
		    try {
				System.out.write(saida);
			} catch (IOException e) {
				e.printStackTrace();
			}
	}
}

Espero ter ajudo

Qualquer coisa post ae

Criado 1 de setembro de 2006
Ultima resposta 2 de set. de 2006
Respostas 13
Participantes 4