Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.89 KB | None | 0 0
  1. package ucbusca;
  2.  
  3. import java.io.IOException;
  4. import java.net.DatagramPacket;
  5. import java.net.InetAddress;
  6. import java.net.MulticastSocket;
  7. import java.rmi.NotBoundException;
  8. import java.rmi.RemoteException;
  9. import java.rmi.registry.LocateRegistry;
  10. import java.rmi.registry.Registry;
  11. import java.rmi.server.UnicastRemoteObject;
  12. import java.util.ArrayList;
  13. import java.util.HashMap;
  14. import java.util.HashSet;
  15. import java.util.concurrent.TimeUnit;
  16.  
  17. public class RMIServer extends UnicastRemoteObject implements serverInterface {
  18.    
  19.     public RMIServer() throws RemoteException {
  20.         super();
  21.     }
  22.    
  23.     private static final long serialVersionUID = 1L;
  24.     //private static final;
  25.    
  26.    
  27.     public void ping() {}
  28.    
  29.     //duvidas à cerca deste synchonized
  30.     public synchronized String login(String username,String password) {
  31.         String res= new String();
  32.         String multicastRequest;
  33.         String multicastResponse;
  34.         multicastRequest = String.format("type|login;username|%s;password|%s",username,password);
  35.         byte[] request = multicastRequest.getBytes();
  36.         byte[] response = new byte[100];
  37.         try {
  38.             InetAddress address = InetAddress.getByName("225.0.0.1");;
  39.             MulticastSocket socket = new MulticastSocket();
  40.             socket.joinGroup(address);
  41.             DatagramPacket msgOut = new DatagramPacket(request, request.length, address,4321);
  42.             socket.send(msgOut);
  43.             DatagramPacket msgIn = new DatagramPacket(response, response.length);
  44.             //socket.receive(msgIn);
  45.             multicastResponse = new String(msgIn.getData(),0,msgIn.getLength());
  46.             //split da String para verificar a conclusão da operação
  47.             //
  48.             //
  49.             socket.leaveGroup(address);
  50.         }catch(IOException e) {
  51.             System.out.println(e);
  52.         }
  53.         return res;
  54.     }
  55.    
  56.     //duvidas à cerca deste synchonized
  57.     public synchronized boolean registar(String username,String password) {
  58.         System.out.println("Chamada feita pelo cliente");
  59.         //socket.setTimeToLive(1);
  60.         boolean res=false;
  61.         String multicastRequest;
  62.         String multicastResponse;
  63.         multicastRequest = String.format("type|register;username|%s;password|%s;status|admin",username,password);
  64.         byte[] request = multicastRequest.getBytes();
  65.         byte[] response = new byte[100];
  66.         try {
  67.             InetAddress address = InetAddress.getByName("225.0.0.0");;
  68.             MulticastSocket socket = new MulticastSocket();
  69.             socket.joinGroup(address);
  70.             DatagramPacket msgOut = new DatagramPacket(request, request.length, address,4321);
  71.             socket.send(msgOut);
  72.             DatagramPacket msgIn = new DatagramPacket(response, response.length);
  73.             System.out.println("Entrou e enviou");
  74.             //socket.receive(msgIn);
  75.             multicastResponse = new String(msgIn.getData(), 0, msgIn.getLength());
  76.             //split da string para verificar a conclusão da operação
  77.             //res = true;
  78.             socket.leaveGroup(address);
  79.         }catch(IOException e) {
  80.             System.out.println(e);
  81.         }
  82.         return res;
  83.     }
  84.    
  85.     //duvidas à cerca deste synchonized
  86.     public synchronized HashMap<String, HashSet<String>> pesquisa(ArrayList<String> palavras,int size) {
  87.         HashMap<String, HashSet<String>> res = new HashMap<String, HashSet<String>>();
  88.         String multicastRequest;
  89.         String multicastResponse;
  90.         multicastRequest = String.format("type|pesquisa;num_urls|%d;",size);
  91.         for(int i=0;i<size;i++) {
  92.             String tempUrl = String.format("%s|", palavras.get(i));
  93.             multicastRequest=multicastRequest+tempUrl;
  94.         }
  95.         byte[] request = multicastRequest.getBytes();
  96.         byte[] response = new byte[100];
  97.         try {
  98.             InetAddress address = InetAddress.getByName("225.0.0.0");;
  99.             MulticastSocket socket = new MulticastSocket();
  100.             socket.joinGroup(address);
  101.             DatagramPacket msgOut = new DatagramPacket(request, request.length, address,4321);
  102.             socket.send(msgOut);
  103.             DatagramPacket msgIn = new DatagramPacket(response, response.length);
  104.             socket.receive(msgIn);
  105.             multicastResponse = new String(msgIn.getData(), 0, msgIn.getLength());
  106.             //split da string para verificar a conclusão da operação e colocação da resposta num HashMap
  107.             socket.leaveGroup(address);
  108.         }catch(IOException e) {
  109.             System.out.println(e);
  110.         }
  111.         return res;
  112.     }
  113.    
  114.     public static void main(String args[]) {
  115.         try{
  116.             serverInterface rmi = (serverInterface) LocateRegistry.getRegistry("localhost",7000).lookup("rmi");
  117.             while(true){
  118.                 System.out.println("Secondary RMI server pinging the primary server...");
  119.                 rmi.ping();
  120.                 System.out.println("Primary server is online");
  121.                 TimeUnit.SECONDS.sleep(5);
  122.             }
  123.         }catch (NotBoundException | RemoteException | InterruptedException e) {
  124.             System.out.println("Connecting...");
  125.             try {
  126.                 RMIServer h = new RMIServer();
  127.                 Registry r = LocateRegistry.createRegistry(7000);
  128.                 r.rebind("rmi", h);
  129.                 System.out.println("Primary RMI Server online");
  130.             }catch (IOException re) {
  131.                 System.out.println("Exception in Rmi Server: " + re);
  132.             }
  133.         }
  134.     }
  135.    
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement