PDA

View Full Version : [JAVA]UDP, ascoltare la stessa porta


MEMon
29-07-2006, 13:40
Avrei la necessità di ascoltare la stessa porta in due thread differente, per intenderci, creo un socket così:
DatagramSocket ds=new DatagramSocket(porta);
Poi rimango in ascolto di quel socket su due thread differenti con
ds.receive(datagramPacket);
Il fatto è che mi sembra che quando ricevo qualcosa su quella porta, non viene ricevuta in entrambi i thread, ma solo dal primo che se lo aggiudica, cioè da quello che per primo esegue la riga ds.receive(datagramPacket);

E' normale questa situazione?

cisc
29-07-2006, 16:55
a me sembra normalissimo, altrimenti, per quanto tempo si dovrebbe mantenere l'ultimo datagramma arrivato!?! e se arriva un nuovo datagramma!?!...insomma, questo è il comportamente corretto, ti consiglierei di usare una classe di utilità, non so, UdpConnection o un altro nome che preferisci, con un buffer e magari, utilizzando i monitor di java, ti gestisci la poltica che preferisci per quanto riguarda la lettura dei datagrammi udp da parte di più thread...

MEMon
29-07-2006, 17:05
Si infatti ho seguito il tuo stesso ragionemento e mi è sembrato ovvio anche a me, purtroppo ci ho pensato troppo tardi a questo inconveniente, ho passato una giornata a scrivermi un protcollo mio basato su dei servizi, ogni servizio utilizza un sokect per ricevere e uno per inviare, alcuni servizi condividono stesse porte e non avevo pensato a questo inconveniente...pazienza.