llamadaremota.java

来自「java 实现的P2P Chord算法。chord算法是结构式的P2P搜索与管理」· Java 代码 · 共 73 行

JAVA
73
字号
package org.mikel.jchord.red;/* * LlamadaRemota.java * * Created on 28 de enero de 2005, 16:20 */import java.net.*;import java.io.*;import org.mikel.jchord.Nodo;/** * * @author mikel */public class LlamadaRemota extends Thread {        Peticion pet;    Nodo nodoDue駉;            /**     * Creates a new instance of LlamadaRemota     * @param pet     * @param nodoDue駉     */    public LlamadaRemota(Peticion pet, Nodo nodoDue駉) {                this.pet = pet;        this.nodoDue駉 = nodoDue駉;            }        /**     *     * @return     */    public Peticion ejecutar() throws LlamadaRemotaException {                try {       //      TODO code application logic here                                   Socket s = new Socket();                        java.net.InetSocketAddress addr = new InetSocketAddress(pet.getDestino().getIP(),pet.getDestino().getPuerto());                        s.setReuseAddress(true);                        s.setSoTimeout(15000);                       s.bind(null);                        s.connect(addr);                  //      Socket s = (Socket) nodoDue駉.obtenerConexion(pet.getDestino());                                        ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());            out.writeObject(pet);            out.flush();                        ObjectInputStream in = new ObjectInputStream(s.getInputStream());            Peticion pet = (Peticion) in.readObject();            nodoDue駉.unlock(pet.getDestino());            pet.setCodigoError(1);            return pet;        } catch(Exception e) {            /*System.out.println("Error de "+nodoDue駉.getIdNodo().getIntId()+" ejecutando llamada remota");            System.out.println(e.getMessage());            pet.setCodigoError(-1);*/            //e.printStackTrace();            //return pet;            throw new LlamadaRemotaException("Error de "+nodoDue駉.getIdNodo().getIP()+":"+nodoDue駉.getIdNodo().getPuerto()+" al intentar realizar petici髇 remota: "+pet.getMetodo()+" dest: "+pet.getDestino().getIP()+":"+pet.getDestino().getPuerto()+" "+e.getMessage());                    }            }}

⌨️ 快捷键说明

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