Vector over RMI
jeg er igang med at lave et lille program, en form for multiplayer netspil. Jeg er igang med at lave rmi delen, men er stødt på et problem. Alle spillerne (figur) bliver gemt i et vector (spillere), der ligger på min server. Det virker fint nok med at sende og hente, men når to logger på samtidigt, er det kun den der kom senest på, der kan se begge spillere. altså comp 1 starter op og kan se sin egen figur. Comp 2 starter op, og kan se sin egen figur + comp 1's figur, men comp 1 kan ikke se comp 2's figur.Og til koden:
import java.util.*;
import java.awt.*;
import java.rmi.server.UnicastRemoteObject;
public class spilServer extends UnicastRemoteObject implements spilServerInter
{
Vector spillere = new Vector();
figur buffer;
boolean tilføjet;
public spilServer() throws java.rmi.RemoteException
{
}
public synchronized Vector getSpillere(int kortNr)
{ // -------- HER BLIVER VECTORET SENDT
return (Vector) spillere.clone();
}
public synchronized void tilføj(figur spiller)
{
for (int x = 0; x < spillere.size(); x++)
{
buffer = (figur) spillere.elementAt(x);
if (spiller.navn.equals(buffer.navn))
{
tilføjet = true;
spillere.removeElementAt(x);
spillere.insertElementAt(spiller, x);
break;
}
}
if (!tilføjet)
{
spillere.addElement(spiller);
tilføjet = false;
}
}
}
------------------------
import java.awt.*;
import java.rmi.Naming;
public class server
{
public static void main(String[] arg) throws Exception
{
spilServerInter SS = new spilServer();
Naming.rebind("rmi://localhost/spilServer", SS);
System.out.println("Serveren er oprettet!");
}
}
------------------
...
try
{
spilServerInter SS = (spilServerInter) Naming.lookup("rmi://80.161.140.131/spilServer");
SS.tilføj(hovedPerson.getFigur()); // sender ens egen figur til serveren
objekter = SS.getSpillere(0); // nye objekter kommer ikke med
} catch (Exception e)
{
e.printStackTrace();
}
...
