Newsgroup: it.comp.java
Titolo: Ping in java

ciao a tutti sapete se č possibili fare un ping in java?
so che icmp non č supportato
qualche alternativa?
grazie

 udp

 ciao a tutti sapete se č possibili fare un ping in java?
Non si puo'.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

qualche risorsa utile...
http://www.geocities.com/SiliconValley/Bit/5716/ping/index_eng.html
http://www.jguru.com/faq/view.jsp?EID=9904
questo è il codice che ho usato io in un'occasione:
import java.net.*;
import java.io.*;
import java.util.*;
/**
 * @author Luigi
 * @version 1.0
 */
public class Pinger {
    static final int PING_PORT = 7;
    static final int LOCAL_PORT = 8189;
    static final int PING_INTERVAL = 1000;
    static final int PING_TIMEOUT = 3000;
    static final int PING_NUMBER = 3;
    static final int PING_SIZE = 32; //byte size of the "ping" message
    InetAddress address = null;
    public Pinger(InetAddress newAddress) {
 address = newAddress;
    }
    public void doPing() throws SocketException, UnknownHostException {
 byte[] ping = new byte[PING_SIZE];
 byte[] pong = new byte[PING_SIZE];
        DatagramSocket socket = new DatagramSocket(LOCAL_PORT);
        socket.setSoTimeout(PING_TIMEOUT);
        Random random = new Random(System.currentTimeMillis());
 for (byte i = 0; i < PING_NUMBER; i++) {
            random.nextBytes(ping);
            DatagramPacket pingPaket =
                new DatagramPacket(ping, ping.length,
                    InetAddress.getLocalHost(), LOCAL_PORT);
            DatagramPacket pongPaket =
                new DatagramPacket(pong, pong.length);
            try {
                long time1 = System.currentTimeMillis();
                socket.send(pingPaket);
                socket.receive(pongPaket);
                long elapsed = System.currentTimeMillis() - time1;
                System.out.println("Reply from " + address.getHostAddress()
+ " "
                                   + elapsed + "ms elapsed, "
                                   + PING_SIZE + " byte(s) sent...");
            } catch (IOException ioe) {
                System.out.println("Error : " + ioe.getMessage());
                ioe.printStackTrace(System.err);
            }
            try {
                Thread.sleep(PING_INTERVAL);
            } catch (InterruptedException ie) {
                // ie.printStackTrace(System.err);
            }
        }
 socket.close();
 socket = null;
    }
    public static void main(String[] args)
        throws UnknownHostException, SocketException
    {
        try {
            java.net.BindException b;
            InetAddress addr = InetAddress.getByName(args[0]);
            System.out.println("Pinging " + addr.getHostName() +
                               " ["+ addr.getHostAddress() + "] with " +
                               PING_SIZE + " bytes:\n");
            Pinger pinger = new Pinger(addr);
            pinger.doPing();
        } catch (ArrayIndexOutOfBoundsException aiobEx) {
            System.err.println("Usage: java Pinger [hostname]");
        }
    }
}

     static final int PING_SIZE = 32; file://byte size of the "ping"

Ciao, grazie per il codice, l 'ho compilato e eseguito, ma ho un problema:
se gli faccio fare il ping su di una macchina presente sulla mia LAN, va
tutto bene
ma se gli faccio fare il ping su di una macchina della LAN che è spenta (o
che non esiste), il ping da comunque esito positivo, mentre io mi aspetterei
una bella eccezione!
Perchè tutto ciò???

public class Pinger {
Il tuo codice non funziona, qui da me; da in output un tempo di 0 ms
per qualsiasi target purchč il DNS lo risolva, ed inoltre non vedo
pacchetti uscire dalle mie schede di rete...
Peraltro, se uso due socket diversi per mandare e ricevere, non pinga
piu nulla...
Boh,
Mauri.
-- 
La forza di gravitŕ č un falso mito,
č la Terra che succhia!

 ha scritto nel messaggio
news:a3btev$a8g$1...@newsreader.mailgate.org...

Vai a vedere
http://www.jalice.net/ping.htm
Ciao

 thnx
Se ricordo bene dovrebbe funzionare in questo modo:
Tu invii un pachetto udp con ip address =  il target del ping e devi
utilizzare come destination port una numero di porta molto elevato che
presumi esere inutilizzata ( dovrebbe funzionare come il traceroute su
Unix), quando il pacchetto raggiunge l'host di destinazione il messaggio di
risposta dovrebbe essere un pacchetto ICMP (destinazion Unreachable and Port
Unreachable). Il concetto è quello di fare un traceroute e tener conto solo
dell'ultima informazione (host target raggiunto).
Non so se ti sono stato di aiuto.
Ciao

 
http://www.jalice.net/ping.htm
Già un ping utilizzando il comando ping del So
già non ci avevo pensato
ti ringrazio molto

 ha scritto nel messaggio
news:a3kdks$qia$1...@newsreader.mailgate.org...

Attento che ci sono alcune differenze tra i ping dei vari SO.
Ciao