Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    5

    Socket Client Server non bloccante

    Buongiorno, ho un problema che sto tentando di risolvere da alcuni giorni ma non riesco. Purtroppo non ho a disposizione molto tempo e dovrei riuscire a risolverlo in tempi brevi, per cui mi sono deciso di chiedere un aiuto.
    Il problema, semplificando molto il contesto, è questo:
    Supponiamo di avere un JFrame con 2 pulsanti, uno start e l'altro stop. Quando premo il pulsante start si deve avviare una connessione da cui ricevo segnali da un server e deve poter lavorare in background. Quando premo stop la connessione si deve interrompere e nel frattempo devo poter eseguire anche ulteriori operazioni sull'interfaccia.
    Ora fino alla pressione del tasto start tutto funziona regolarmente, il client riceve segnali e fa quello che deve fare, ma il problema è che i controlli sono congelati ed è impossibile interrompere la connessione.
    Credo che la soluzione stia nel realizzare un thread che si occupa della connessione, che una volta avviato continua il suo lavoro fino a quando non viene terminato. Ho provato a realizzarlo ma non sono riuscito nell'intento. Purtroppo, come dicevo sopra, ho poco tempo per realizzarlo e vi chiedo un aiuto concreto.
    Grazie in anticipo

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Sposto nella sezione Java.


    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
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Quello che ti serve è studiare i thread. Ed, in particolare, la relazione tra i thread "tuoi" e l'EDT (Event Dispatch Thread), che è il thread che si occupa di dispacciare gli eventi e di ridisegnare l'interfaccia.

    In particolare, l'EDT non deve essere tenuto impegnato per fare cose che non deve fare. Quindi, il tuo lavoro (comunicazione col server, invio/ricezione messaggi sulla rete, ecc) va fatto in un thread separato.

    Cerca informazioni al riguardo, se ne è parlato ampiamente anche in questo forum.

    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

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 © 2024 vBulletin Solutions, Inc. All rights reserved.