Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ucbusca;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.InetAddress;
- import java.net.MulticastSocket;
- import java.rmi.NotBoundException;
- import java.rmi.RemoteException;
- import java.rmi.registry.LocateRegistry;
- import java.rmi.registry.Registry;
- import java.rmi.server.UnicastRemoteObject;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.concurrent.TimeUnit;
- public class RMIServer extends UnicastRemoteObject implements serverInterface {
- public RMIServer() throws RemoteException {
- super();
- }
- private static final long serialVersionUID = 1L;
- //private static final;
- public void ping() {}
- //duvidas à cerca deste synchonized
- public synchronized String login(String username,String password) {
- String res= new String();
- String multicastRequest;
- String multicastResponse;
- multicastRequest = String.format("type|login;username|%s;password|%s",username,password);
- byte[] request = multicastRequest.getBytes();
- byte[] response = new byte[100];
- try {
- InetAddress address = InetAddress.getByName("225.0.0.1");;
- MulticastSocket socket = new MulticastSocket();
- socket.joinGroup(address);
- DatagramPacket msgOut = new DatagramPacket(request, request.length, address,4321);
- socket.send(msgOut);
- DatagramPacket msgIn = new DatagramPacket(response, response.length);
- //socket.receive(msgIn);
- multicastResponse = new String(msgIn.getData(),0,msgIn.getLength());
- //split da String para verificar a conclusão da operação
- //
- //
- socket.leaveGroup(address);
- }catch(IOException e) {
- System.out.println(e);
- }
- return res;
- }
- //duvidas à cerca deste synchonized
- public synchronized boolean registar(String username,String password) {
- System.out.println("Chamada feita pelo cliente");
- //socket.setTimeToLive(1);
- boolean res=false;
- String multicastRequest;
- String multicastResponse;
- multicastRequest = String.format("type|register;username|%s;password|%s;status|admin",username,password);
- byte[] request = multicastRequest.getBytes();
- byte[] response = new byte[100];
- try {
- InetAddress address = InetAddress.getByName("225.0.0.0");;
- MulticastSocket socket = new MulticastSocket();
- socket.joinGroup(address);
- DatagramPacket msgOut = new DatagramPacket(request, request.length, address,4321);
- socket.send(msgOut);
- DatagramPacket msgIn = new DatagramPacket(response, response.length);
- System.out.println("Entrou e enviou");
- //socket.receive(msgIn);
- multicastResponse = new String(msgIn.getData(), 0, msgIn.getLength());
- //split da string para verificar a conclusão da operação
- //res = true;
- socket.leaveGroup(address);
- }catch(IOException e) {
- System.out.println(e);
- }
- return res;
- }
- //duvidas à cerca deste synchonized
- public synchronized HashMap<String, HashSet<String>> pesquisa(ArrayList<String> palavras,int size) {
- HashMap<String, HashSet<String>> res = new HashMap<String, HashSet<String>>();
- String multicastRequest;
- String multicastResponse;
- multicastRequest = String.format("type|pesquisa;num_urls|%d;",size);
- for(int i=0;i<size;i++) {
- String tempUrl = String.format("%s|", palavras.get(i));
- multicastRequest=multicastRequest+tempUrl;
- }
- byte[] request = multicastRequest.getBytes();
- byte[] response = new byte[100];
- try {
- InetAddress address = InetAddress.getByName("225.0.0.0");;
- MulticastSocket socket = new MulticastSocket();
- socket.joinGroup(address);
- DatagramPacket msgOut = new DatagramPacket(request, request.length, address,4321);
- socket.send(msgOut);
- DatagramPacket msgIn = new DatagramPacket(response, response.length);
- socket.receive(msgIn);
- multicastResponse = new String(msgIn.getData(), 0, msgIn.getLength());
- //split da string para verificar a conclusão da operação e colocação da resposta num HashMap
- socket.leaveGroup(address);
- }catch(IOException e) {
- System.out.println(e);
- }
- return res;
- }
- public static void main(String args[]) {
- try{
- serverInterface rmi = (serverInterface) LocateRegistry.getRegistry("localhost",7000).lookup("rmi");
- while(true){
- System.out.println("Secondary RMI server pinging the primary server...");
- rmi.ping();
- System.out.println("Primary server is online");
- TimeUnit.SECONDS.sleep(5);
- }
- }catch (NotBoundException | RemoteException | InterruptedException e) {
- System.out.println("Connecting...");
- try {
- RMIServer h = new RMIServer();
- Registry r = LocateRegistry.createRegistry(7000);
- r.rebind("rmi", h);
- System.out.println("Primary RMI Server online");
- }catch (IOException re) {
- System.out.println("Exception in Rmi Server: " + re);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement