Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    [java] rilevare caduta connessione

    Nel mio programmino avrei bisogno di aggiungere un "rilevatore di mancanza di connessione internet". Ho pensato di fare una cosa del genere:

    Codice PHP:
    Timer timer = new Timer(30000, new ActionListener()
            {
                public 
    void actionPerformed(ActionEvent e)
                {
                    try
                    {
                        
    HttpURLConnection connection = (HttpURLConnection) ((new URL("http://www.google.com")).openConnection());
                        
    connection.connect();

                        if (
    connection.getResponseCode() / 100 != 2)
                        {
                            
    System.out.println("errore: " connection.getResponseMessage());

            ...
                        }
                        else
                        {
                            
    System.out.println("connesso!");
                        }
                    }
                    catch (
    Exception ex)
                    {
                        
    ex.printStackTrace();
                    }
                }
            });

            
    timer.setRepeats(true);
            
    timer.start(); 
    Praticamente ogni 30 secondi provo a collegarmi a google.com e vedo se ci riesco o meno. Purtroppo pero' in questo modo non funziona: quando "stacco internet" il timer resta in attesa su connection.connect() (e dopo un po' da errore di timeout). Come posso aggiungere un rilevatore funzionante?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Non ti lancia un'eccezione java.net.UnknownHostException? Quello dovrebbe essere l'effetto di avere la macchina non collegata ad internet.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Andrea1979
    Non ti lancia un'eccezione java.net.UnknownHostException? Quello dovrebbe essere l'effetto di avere la macchina non collegata ad internet.
    Non lancia nulla! Solo un errore di timeout dopo un bel po'... Ma non posso usare l'errore di timeout come segno che non c'e' connessione, il timeout puo' essere causato da motivi legittimi!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Per curiosità, che versione di java stai utilizzando? Qui, con la 6, senza connessione internet e con un codice molto simile al tuo, mi lancia quella eccezione. Sto su XP Professional con SP 2

    codice:
    try {
                URL url = new URL("http://www.google.com");
                HttpURLConnection uc = (HttpURLConnection)url.openConnection();
                uc.setConnectTimeout(2000);
                uc.connect();
                
            }
            catch (Exception e) {
                e.printStackTrace();
            }
    il timout l'ho impostato a 2 secondi, puoi allungarlo... ma con siti come google, se sei connesso 2 secondi sono pure troppi
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Andrea1979
    Per curiosità, che versione di java stai utilizzando? Qui, con la 6, senza connessione internet e con un codice molto simile al tuo, mi lancia quella eccezione. Sto su XP Professional con SP 2

    codice:
    try {
                URL url = new URL("http://www.google.com");
                HttpURLConnection uc = (HttpURLConnection)url.openConnection();
                uc.setConnectTimeout(2000);
                uc.connect();
                
            }
            catch (Exception e) {
                e.printStackTrace();
            }
    il timout l'ho impostato a 2 secondi, puoi allungarlo... ma con siti come google, se sei connesso 2 secondi sono pure troppi
    Ho java 1.5.0_13 (per mac) ma non credo sia per questo... Faccio qualche altra prova
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ho provato ad impostare il timeout ed effettivamente genera eccezione (java.net.SocketTimeoutException) quando stacco ma ogni tanto la genera anche quando sono connesso
    Credo dipenda dal fatto che ho il 56k. Praticamente basta aprire il browser e caricare qualche pagina per far si che salti fuori una java.net.SocketTimeoutException Il mio programma è un download manager, basta iniziare a scaricare qualcosa che gia' va in timeout...

    Non c'e' altra soluzione?
    Intanto grazie
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    il fatto è che se non c'è connessione ad internet, non dovrebbe nemmeno provare a fare il connect, perché l'host non è nemmemo riconosciuto (riconoscerebbe solo localhost e/o altri nomi - se hai un DNS - o indirizzi ip di altre macchine nella tua LAN)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Andrea1979
    il fatto è che se non c'è connessione ad internet, non dovrebbe nemmeno provare a fare il connect, perché l'host non è nemmemo riconosciuto (riconoscerebbe solo localhost e/o altri nomi - se hai un DNS - o indirizzi ip di altre macchine nella tua LAN)


    Vabbe', grazie lo stesso... Magari posso mettere un timeout "largo", ad esempio 30 secondi... E fare il controllo ogni 90.. Boh, adesso vedo
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.