Fiz duas implementacao:
// #01
try {
String address = "google.com";
// status 0: Internet is active
// status 1: Internet is not active
int status = -1;
int statusOld = -1;
while (true) {
Process process = Runtime.getRuntime().exec("cmd /c ping -n 1 ".concat(address));
status = process.waitFor();
if(statusOld != status){
System.out.println(MessageFormat.format("[{0}] {0,choice,0# Connected|1#Disconnected} at: {1,date,dd/MM/yyyy HH:mm:ss}", status, Calendar.getInstance().getTime()));
statusOld = status;
}
}
} catch (Exception e) {
e.printStackTrace();
}finally{
System.out.println("Bye!");
}
// #02
try {
String address = "google.com";
// status 0: Internet is active
// status 1: Internet is not active
int status = -1;
int statusOld = -1;
while (true) {
Process process = Runtime.getRuntime().exec("cmd /c ping -n 1 ".concat(address));
int exitValue = process.waitFor();
String line = null;
/*
BufferedReader err = new BufferedReader(new InputStreamReader(process.getErrorStream()));
while ((line=err.readLine())!=null) {
System.out.println(line);
}
*/
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
line=in.readLine();
status = line.trim().startsWith("Ping request could not find host") ? 1 : 0;
if(statusOld != status){
System.out.println( MessageFormat.format("[{0}] {1,choice,0# Connected|1#Disconnected} at: {2,date,dd/MM/yyyy HH:mm:ss}", exitValue, status, Calendar.getInstance().getTime()) );
statusOld = status;
}
}
} catch (Exception e) {
e.printStackTrace();
}finally{
System.out.println("Bye!");
}
Achei que a primeira implementacao funcionaria bem, mas nos testes, pelo que percebi, sempre que algum pacote do ping era perdido o retorno do metodo process.waitFor(); era 1, mesmo que a conexao nao tivesse sido perdida. Ou seja invalidaria a logica do programa.
Na documentacao diz:
Entao quando um pacote eh perdido o ping trata como se a finalizacao do comando nao fosse normal ? Acho que eh isso.
A segunda implementacao apesar de mais “feia” foi a que tem funcionado. Ate agora pelo menos 
David, estou estudando o link q vc me passou, bem interessante. Porem nao manjo muito de rede. Em que sentido essa lib poderia ajudar no meu programa ?
Qualquer sugestao ou correcao sera bem vinda.