Dúvida sobre conexão com a internet do sistema operacional

Pessoal, blz?

Tô com uma dúvida aqui, eu queria saber se existe alguma forma de identificar se o sistema operacional tem uma conexão ativa com a Interenet.

O dilema é o seguinte.

Estou fazendo uma aplicação em Swing, só que a conexão do cliente é horrível, ou seja, ela é muito instável, então na aplicação estou mantendo um banco de dados embutido(h2 ou mysql, tô pensando ainda), toda vez que uma conexão se mostrar ativa, ela manda pro banco online todas as alterações, feita na aplicação desktop.

Tem como?

Não seria questão de somente tentar conectar ao banco a cada tanto tempo? Caso não consiga ele deve dar alguma exceção.

KKKKK, realmente parece uma boa soluçã, nem parei pra pensar um pouco. Valeu.

Ok, isso soluciona o problema especifico dele, porem existe algum procedimento padrão ?? para testar c existe conexão ativa ? sem tentar criar uma conexão com alguem, pq pode ocorrer de o seu servioço estar fora do ar, e não a internet em si, se houver como, eu tb me interesso nessa solução ^^ desde já agradeço

Estar conectado à internet é você poder se conectar à um IP fora da sua rede, e que ele responda ao teu pedido. Por razões de segurança, muitos ips só respondem se você tentar conectar à um serviço deles, o mais comum é o servidor web via http na porta 80.

Acho mais fácil mandar um HTTP HEAD pra http://www.google.com/ e outros sites difíceis de saírem do ar para verificar se há conectividade. Claro que isso também depende do firewall nos sistemas instalados.

Continuo com a minha opinião de antes, se você quiser saber se tem conexão com a internet, é por que você quer se conectar a algum IP específico para realizar algum trabalho. Este é o único motivo útil.

Eu utilizo o seguinte código para testar se há uma conexão com a “internet”:

public static boolean isConnected() { String host = "http://www.MEU_SITE.com.br"; int port = 80; int timeout = 5000; Socket s = SocketOpener.openSocket(host, port, timeout); if (s == null) { return false; } else { return true; } }