Har ett problem med variabler. Jag har skapat en Receive-klass som har till uppgift att hämta meddelande från en Multicastsocket via joingroup, följande kod skapar datagrampacket:
DatagramPacket dpreceive = new DatagramPacket(data, data.length); ms1.receive(dpreceive);//ms1 är multisocketen
String received = new String(dpreceive.getData(), dpreceive.getOffset(), dpreceive.getLength());
Varje datagram läggs i en datasamling som deklareras:
List samling = Collections.synchronizedList(new ArrayList());
Sedan har jag en if sats som ska kolla om det som ligger i strängen received är samma som finns i datasamlingen för att undvika att lägga in samma meddelande igen:
if(samling.isEmpty()){
samling.add(received);
}
else{
for(Iterator i = samling.iterator(); i.hasNext(); ){
String str = (String) i.next();
if(str == received){
Problemet är att den inte går in i if-satsen här ovanför. Jag har testat att skriva ut både str och received och båda innehåller samma sträng. Varför tar den inte argumentet? Testade att hårdkoda str: if(str == "hej") och då funkade det. Vad är fel?
//Stefan