public class Server implements ServerExports {
int index = -1;
public int register(ClientExports client) {
clients[++index] = client;
return index;
}
ClientExports clients[] = new ClientExports [100];
public void broadcast(Update event) { }
}
|
public interface ServerExports {
public int register(ClientExports client);
public void broadcast(Update event);
} |
public class Simulation {
public static void main(String[] args) {
// on the server's host
Server server = new Server();
// on any of the clients' hosts
ServerExports far = server;
Client adrian = new Client("Adrian");
adrian.id = far.register(adrian);
adrian.server = far;
adrian.start();
Client bjorn = new Client("Bjorn");
bjorn.id = far.register(bjorn);
bjorn.server = far;
bjorn.start();
Client petchel = new Client("Tom");
petchel.id = far.register(petchel);
petchel.server = far;
petchel.start();
}
}
|
|
public class Client extends Thread implements ClientExports {
String name;
int id;
ServerExports server;
public Client(String name) { this.name = name; }
public void update(Update event) {
System.out.println(this.name + " receives: ***(" + event + ")*** ");
}
public void run() {
while (true) {
try { sleep((int)(Math.random() * 6000 + 10000)); }
catch (Exception e) { }
server.broadcast(new Update(this.name + " says: Howdy!"));
}
}
} |
public interface ClientExports {
public void update(Update event);
} |
public class Update {
String message;
Update(String message) {
this.message = message;
}
public String toString() {
return message;
}
} | |