Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Problema con Socket...

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356

    Problema con Socket...

    Ciao a tutti,
    ho notato questo "malfunzionamento" nella mia applicazione:

    la riga incriminata è questa:

    Socket s1 = new Socket(ip, 7777);

    dove ip è una stringa contenente l'indirizzo ip dell'applicazione server.

    Il problema è il seguente.
    Se come ip metto l'ip di un computer che so esistere, per esempio "localhost", se l'applicazione server non è in ascolto, la riga incriminata mi restituisce l'eccezione "connection refused" e fin qui tutto ok.

    Se invece come ip metto un indirizzo qualunque, quindi anche un indirizzo che magari non esiste, l'applicazione si blocca su quella riga, mentre io pensavo mi restituisse anche in questo caso un'eccezione. Invece niente, si piana su quella riga e non va bene.

    Come posso fare per avere un comportamento simile a quello di sopra?
    Jekkil

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Credo che tu abbia qualche altro tipo di problema, prova a postare un po' più di codice.

    Questo banalissimo esempio, infatti, lancia una bella ConnectException, dopo circa 30 secondi:

    codice:
    import java.net.*;
    
    public class Connessione {
       public static void main(String[] args) throws Exception {
          Socket s = new Socket("123.123.123.123", 7777);
          System.out.println("Connesso!?!?");
       }
    }
    Output:

    codice:
    Exception in thread "main" java.net.ConnectException: Connection timed out: connect
            at java.net.PlainSocketImpl.socketConnect(Native Method)
            at java.net.PlainSocketImpl.doConnect(Unknown Source)
            at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
            at java.net.PlainSocketImpl.connect(Unknown Source)
            at java.net.SocksSocketImpl.connect(Unknown Source)
            at java.net.Socket.connect(Unknown Source)
            at java.net.Socket.connect(Unknown Source)
            at java.net.Socket.<init>(Unknown Source)
            at java.net.Socket.<init>(Unknown Source)
            at Connessione.main(Connessione.java:5)

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    Hai ragione infatti la da anche a me
    Solo che la da dopo oltre 3 minuti
    E non mi riesco a spiegare perchè...non c'è un modo per settare il timeout prima di creare il socket?
    Jekkil

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    68
    Il metodo setSoTimeout della classe Socket dovrebbe fare al caso tuo. Per meglio comunque dai un occhiata alla documentazione.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    codice:
    public static void main (String[] args) throws Exception {
            Socket s = new Socket();        
            s.connect(new InetSocketAddress("123.123.123.123", 7777), 10000);
            System.out.println("Connesso!?!?");
        }
    Dovrebbe andare in timeout dopo 10 secondi (il timeout è in milli).
    Prova un po'.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.