Visualizzazione dei risultati da 1 a 5 su 5

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Warioss Visualizza il messaggio
    ServerUDP:
    codice:
            while(true) {
                // ......
                    DatagramSocket socket = new DatagramSocket(8000);
            }
    Dato che nel ciclo (potenzialmente "infinito" essendoci true) NON c'è il close() del socket, ad ogni ciclo cerchi di creare un DatagramSocket bindato sulla porta locale 8000. Ovviamente lo puoi fare una volta sola. Dal secondo ciclo in poi ...... bam.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    32
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Dato che nel ciclo (potenzialmente "infinito" essendoci true) NON c'è il close() del socket, ad ogni ciclo cerchi di creare un DatagramSocket bindato sulla porta locale 8000. Ovviamente lo puoi fare una volta sola. Dal secondo ciclo in poi ...... bam.
    Sono stupido ahahah hai ragione, non ci avevo proprio pensato , grazie mille. Alla prossima

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Warioss Visualizza il messaggio
    hai ragione, non ci avevo proprio pensato
    Comunque anche mettendo il close(), ad ogni ciclo crei e chiudi il DatagramSocket ... che non è il massimo. Basta crearlo una volta sola. E quindi si tratta di rimaneggiare meglio quella parte.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2015
    Messaggi
    32
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Comunque anche mettendo il close(), ad ogni ciclo crei e chiudi il DatagramSocket ... che non è il massimo. Basta crearlo una volta sola. E quindi si tratta di rimaneggiare meglio quella parte.
    Giusto , è un po' uno spreco fare così semplicemente con una close. Ho risolto creandomi una nuova classe SingletonPatternSocketUDP che sfrutta il design pattern singleton (in questo modo l'ho rimossa proprio la close() in ServerUDP ) :

    codice:
        
    public static synchronized  SingletonPatternSocketUDP getSocketUDP(int porta) {        
    if(istanza == null)
                istanza = new SingletonPatternSocketUDP (porta);
            return istanza;
        }
    e funziona benissimo , senza errori (se può servire pubblico tutto il codice della classe SingletonPatternSocketUDP e non solo il metodo getSocketUDP sopra-riportato)
    Ultima modifica di Warioss; 29-04-2018 a 16:17

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.