Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Cosi?
Dovrei poi ricavare quanti elementi ci sono nella lista e poi selezionare un indice a caso .codice:ArrayList<DatagramPacket> list = new ArrayList<DatagramPacket>(); Msocket.receive(packet); list.add(packet);
Con ArrayList non mi pare ci sia un metodo a riguardo.
Dovrei utilizzare un'altra struttura?
codice:DatagramPacket packet2 = list.get((int)Math.random()* ?); HostAddress = packet2.getAddress();
Come non c'è un metodo a riguardo?
size() restituisce la dimensione dell'ArrayList (numero oggetti contenuti)
get(int x) restituisce l'elemento in posizione "x".
Che altro ti serve?
Se stai cercando un metodo che restituisca un oggetto in posizione casuale, no... la posizione casuale te la devi calcolare tu.
PS: La documentazione l'hai vista?
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
Excuse me
codice:int size = list.size(); DatagramPacket packet2 = list.get((int)Math.random()* size); HostAddress = packet2.getAddress();
No, perché il cast è più prioritario del *, quindi prima fa il cast (risultato sempre 0, perché 1.0 è esclusivo per random() ).
Metti delle parentesi in più.
Comunque, a scanso di equivoci lo ripeto, devi avere DatagramPacket distinti, un nuovo oggetto DatagramPacket per ogni receive che fai.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Ho fatto il procedimento :
Is Correct ?
per 5 secondi ricevo pacchetti :
poi ricavo un pacchetto a caso dalla lista , determino l'indirizzo e spedisco la richiesta a quell'indirizzo :codice:public ArrayList riceviPacchetti(){ ArrayList<DatagramPacket> list = new ArrayList<DatagramPacket>(); try{ Msocket.joinGroup(groupAddress); Msocket.setSoTimeout(5000); byte [] buf = new byte [128]; DatagramPacket packet = new DatagramPacket(buf , buf.length); Msocket.receive(packet); list.add(packet); }catch(Exception err){ err.printStackTrace(); } return list; }//RICEVI PACCHETTI
codice:public static void main (String [] args){ try{ InetAddress groupAddress = InetAddress.getByName("224.0.0.0"); int multicastPort = 5000; int TCPPort = 2000; Client client = new Client(groupAddress , multicastPort , TCPPort); client.inviaPacchettoVuoto(); ArrayList<DatagramPacket> lista = client.riceviPacchetti(); int size = lista.size(); DatagramPacket packet2 = lista.get((int)Math.random()* size); InetAddress HAddress = packet2.getAddress(); client.inviaRichiesta("ciao" , HAddress); }catch(Exception err){ err.printStackTrace(); } }