⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gestorllamadaremota.java

📁 java 实现的P2P Chord算法。chord算法是结构式的P2P搜索与管理协议
💻 JAVA
字号:
package org.mikel.jchord.red;/* * ThreadServidorLlamadasRemotas.java * * Created on 28 de enero de 2005, 16:20 */import java.net.*;import java.io.*;import java.util.*;import org.mikel.jchord.Identificador;import org.mikel.jchord.Nodo;/** * * @author mikel */public class GestorLlamadaRemota implements Runnable {        Socket cliente;    Nodo nodoDue駉;        /**     * Creates a new instance of ThreadServidorLlamadasRemotas     * @param cliente     * @param nodoDue駉     */    public GestorLlamadaRemota(Socket cliente, Nodo nodoDue駉){        this.cliente = cliente;        this.nodoDue駉 = nodoDue駉;    }        public void run(){                try{            //    while(true){            //Obtiene petici髇 del cliente            ObjectInputStream in = new ObjectInputStream(cliente.getInputStream());            Peticion pet = (Peticion) in.readObject();            //System.out.println("Thread Servidor n"+nodoDue駉.getIdNodo().getIntId()+": Recibido peticion de cliente: ");            //CREAR RESPUESTA ejecutando m閠odo en nodo local y rellenando la petici髇            //   System.out.println(nodoDue駉.getIdNodo().getPuerto()+" sirviendo peticion"+pet.getMetodo());            switch(pet.getMetodo()){                                case Peticion.PING:                    pet.setRespuesta(null);                    break;                case Peticion.GET_PREDECESOR:                    pet.setRespuesta(nodoDue駉.getPredecesor());                    break;                case Peticion.FIND_SUCCESSOR:                    Identificador id = nodoDue駉.findSuccessorEscalable((java.math.BigInteger) pet.getParametro());                    pet.setRespuesta(id);                    break;                case Peticion.FIND_SUCCESSOR_PRINT:                    Identificador ident = nodoDue駉.findSuccessorEscalablePrint((java.math.BigInteger) pet.getParametro());                    pet.setRespuesta(ident);                    break;                case Peticion.NOTIFY:                    //notify: aprovecha la respuesta para devolver lista de sucesores actual                    nodoDue駉.notify((Identificador) pet.getParametro());                    pet.setRespuesta(nodoDue駉.getListaSucesores());                    pet.setCodigoError(0);                    break;                case Peticion.NOTIFICAR_LEAVE_SUCESOR_ENVIAR_PREDECESOR_Y_CLAVES:                    //actualizarPredecesorYClaves                    ArrayList params = (ArrayList) pet.getParametro();                    nodoDue駉.actualizarPredecesorYClaves((Identificador)params.get(0),(Hashtable)params.get(1));                    break;                case Peticion.NOTIFICAR_LEAVE_PREDECESOR_ENVIAR_ULTIMO_LISTASUCESORES:                    //actualizarUltimoListaSucesores                    nodoDue駉.actualizarUltimoListaSucesores((Identificador) pet.getParametro());                    break;                                    case Peticion.INSERTAR_VALOR_KEY:                    //insertarValorClave                    Hashtable ht = (Hashtable) pet.getParametro();                    nodoDue駉.a馻dirKeys(ht);                    break;                case Peticion.OBTENER_VALOR_KEY:                    //obtenerValorClave                    pet.setRespuesta(nodoDue駉.getValorListaKeys((java.math.BigInteger) pet.getParametro()));                    break;                                    case Peticion.OBTENER_INFO_NODO:                    //obtenerInfoNodo                    pet.setRespuesta(nodoDue駉.getPropiedades());                    break;                                    default:                    //error                    //System.out.println("Metodo desconocido");                    pet.setCodigoError(-1);                    break;            }                                    //Enviar petici髇 resuelta al cliente            ObjectOutputStream out = new ObjectOutputStream(cliente.getOutputStream());            out.writeObject(pet);            out.flush();                        out.close();            //   }                                } catch(IOException e) {            System.out.println("Error I/O Thread Servidor");            e.printStackTrace();        } catch(ClassNotFoundException ex) {            System.out.println("Error ClassNotFound Thread Servidor");        } catch(Throwable exc) {            System.out.println("Error Thread Servidor");            exc.printStackTrace();        }    }            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -