topozizzo
01-09-2006, 20:14
Salve, avrei bisogno di un consiglio:
Sto realizzando una sorta di p2p. La rete p2p e' organizzata così:
Peer e Leader, i leader formano un gruppo multicast tra loro. A ciascun leader sono connessi dei peer.
Un peer può fare una richiesta con tcp al Leader a cui e' connesso; il Leader controlla se ha la risposta nella cache, se si risponde direttamente, altrimenti innoltra la richiesta nella rete multicast agli altri leader che se hanno la risposta la innoltrano nelle rete multicast.
Insomma:
Domanda
Risposta 1
Risposta 2
.
.
Risposta N
Il problema sorge adesso... Siccome le risposte possono essere molteplici, come posso fare in modo che il peer sappia in qualche modo che non ci sono più risposte per lui????
Non riesco proprio a trovare una soluzione, anche perchè mentre il client attende su tcp col socket aperto non può sapere ne quante risposte gli arriveranno, ne se ne arriveranno.
Io stavo pensando di fare in modo che l'ascolto delle risposte sia delegato a un Thread attivo per un tempo stabilito(N secondi) e poi terminato(quello che ha letto bene, il resto pazienza), ma non so come mettere in pratica quest'idea. All'inizio pensavo a timerTask, ma questa classe non fa altro che schedulare in processo dopo un timeout.... Io invece lo voglio terminare al timeout. A complicare il tutto c'è il fatto che una risposta potrebbe arrivare a socket già chiuso e processo già terminato:mc:
(e li sono eccezioni che volano)
Avete qualce idea alternativa per risolvere il mio problema? :help:
Sto realizzando una sorta di p2p. La rete p2p e' organizzata così:
Peer e Leader, i leader formano un gruppo multicast tra loro. A ciascun leader sono connessi dei peer.
Un peer può fare una richiesta con tcp al Leader a cui e' connesso; il Leader controlla se ha la risposta nella cache, se si risponde direttamente, altrimenti innoltra la richiesta nella rete multicast agli altri leader che se hanno la risposta la innoltrano nelle rete multicast.
Insomma:
Domanda
Risposta 1
Risposta 2
.
.
Risposta N
Il problema sorge adesso... Siccome le risposte possono essere molteplici, come posso fare in modo che il peer sappia in qualche modo che non ci sono più risposte per lui????
Non riesco proprio a trovare una soluzione, anche perchè mentre il client attende su tcp col socket aperto non può sapere ne quante risposte gli arriveranno, ne se ne arriveranno.
Io stavo pensando di fare in modo che l'ascolto delle risposte sia delegato a un Thread attivo per un tempo stabilito(N secondi) e poi terminato(quello che ha letto bene, il resto pazienza), ma non so come mettere in pratica quest'idea. All'inizio pensavo a timerTask, ma questa classe non fa altro che schedulare in processo dopo un timeout.... Io invece lo voglio terminare al timeout. A complicare il tutto c'è il fatto che una risposta potrebbe arrivare a socket già chiuso e processo già terminato:mc:
(e li sono eccezioni che volano)
Avete qualce idea alternativa per risolvere il mio problema? :help: