import java.awt.*; import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.*; public class Server extends UnicastRemoteObject implements RemoteServer { public static void main(String[] args) { try { Server server = new Server(); // Ny grej: startar ett eget registry :-) //LocateRegistry.createRegistry(1099); // Kör detta istället när en annan Server redan dragit igång ett registry: //LocateRegistry.createRegistry(2004); Registry registry = LocateRegistry.getRegistry(1099); Naming.rebind("server2", server); System.out.println("server bound"); } catch(Exception e) { System.out.println("Exception generated: "+ e.getMessage()); } } public Server() throws RemoteException {} public int[] updateImage(Dimension d, double x0Real, double x1Real, double y0Real, double y1Real) throws RemoteException { int[] ia = new int[d.width * d.height]; for(int i = 0; i < d.width; i++) for(int j = 0; j < d.height; j++) { int color = iterToInfinity(i, j, d, x0Real, x1Real, y0Real, y1Real); ia[i + d.width * j] = new Color(255 - color, 255 - color, 255 - color).getRGB(); } return ia; } private int iterToInfinity(int i, int j, Dimension d, double x0Real, double x1Real, double y0Real, double y1Real) { double xRelative = (double)i / (d.width - 1); double yRelative = (double)j / (d.height - 1); double xCurrent = x0Real + xRelative * (x1Real - x0Real); double yCurrent = y0Real + yRelative * (y1Real - y0Real); int iter = 255; double x = 0, xTmp = 0, y = 0, yTmp = 0; for(int k = 0; k < iter; k++) { xTmp = (x * x) - (y * y) + xCurrent; yTmp = 2 * x * y + yCurrent; x = xTmp; y = yTmp; if((x * x + y * y) > 4) return k; } return iter; } }