Foro de elhacker.net

Programación => Java => Mensaje iniciado por: NikNitro! en 24 Mayo 2014, 12:45 pm



Título: Cómo puedo hacer que un main abra dos consolas distintas?
Publicado por: NikNitro! en 24 Mayo 2014, 12:45 pm
Buenas, he estado buscando (aunque tampoco se como llamarlo exactamente) la posibilidad de que un main abra dos consolas distintas.

Os explico, practicando con UDP he medio programado un chat. Esta es la interfaz primaria:
Código
  1. public class Chat {
  2. private Cliente  cl;
  3. private Servidor sv;
  4.  
  5. public Chat() {
  6. cl = new Cliente();
  7. sv = new Servidor();
  8. }
  9.  
  10. public Chat(String ipServ, int puertSend, int puertRec) {
  11. cl = new Cliente(ipServ, puertSend);
  12. sv = new Servidor(puertRec);
  13. }
  14.  
  15. public void Arrancar() {
  16. sv.Connect();
  17. cl.Connect();
  18. }
  19.  
  20. public static void main(String[] args) {
  21. // TODO Auto-generated method stub
  22. Chat chat = new Chat();
  23. chat.Arrancar();
  24. }
  25.  
  26. }
  27.  
  28.  

Pues bueno, en la consola me aparece el servidor conectando, pero no puede conectar. He pensado hacerlo concurrente, pero mi duda es si hay alguna forma de ejecutar cada trozo en una consola diferente (se que puedo llamarlos por separado, pero quiero saber si se puede).

Saludos ;)

EDITO: Aquí tengo el code en una concurrencia básica:
Código
  1. public class Chat {
  2. private Cliente  cl;
  3. private Servidor sv;
  4.  
  5. public Chat() {
  6. cl = new Cliente();
  7. sv = new Servidor();
  8. //////////////////////////////////////////////
  9. Arrancar();
  10. /////////////////////////////////////////////
  11. }
  12.  
  13. public Chat(String ipServ, int puertSend, int puertRec) {
  14. cl = new Cliente(ipServ, puertSend);
  15. sv = new Servidor(puertRec);
  16. }
  17.  
  18. ////////////////////////////////////////////////////// Procedimiento Arrancar() cambiado entero
  19. public void Arrancar() {
  20. sv.start();
  21. cl.start();
  22.  
  23. try {
  24. sv.join();
  25. cl.join();
  26. } catch (InterruptedException e) {
  27. // TODO Auto-generated catch block
  28. e.printStackTrace();
  29. }
  30. }
  31.  
  32. public static void main(String[] args) {
  33. // TODO Auto-generated method stub
  34. new Chat();
  35. }
  36.  
  37. }
  38.  
  39.  


Título: Re: Cómo puedo hacer que un main abra dos consolas distintas?
Publicado por: Nasty35 en 24 Mayo 2014, 13:10 pm
¿Usando hilos(threads)?


Título: Re: Cómo puedo hacer que un main abra dos consolas distintas?
Publicado por: Migugami en 24 Mayo 2014, 14:07 pm
Un chat debe ser multithreading para que se manejen las conexiones paralelamente y no se sature el servidor. No entiendo a qué te refieres con 'ejecutar cada trozo en una consola diferente'.


Título: Re: Cómo puedo hacer que un main abra dos consolas distintas?
Publicado por: NikNitro! en 24 Mayo 2014, 15:05 pm
En este caso no es aún un chat, sino más bien un servidor de eco (el cliente se conecta, le envía algo al servidor y éste le responde).

Yo puedo cojer y ejecutar el Servidor, luego el Cliente (con ip 127.0.0.1 y el mismo puerto) y que funcione (y estarán en diferentes consolas). Mi pregunta es si puedo hacer que aparezcan en diferentes consolas ejecutando un solo programa).

(Una consola será el Servidor y la otra el Cliente).

Salud


Título: Re: Cómo puedo hacer que un main abra dos consolas distintas?
Publicado por: Migugami en 24 Mayo 2014, 15:34 pm
Por lo que tengo entendido, un proceso debe estar asociado a una única consola, por lo que no es posible desplegar dos consolas en una misma aplicación. Lo normal es usar un cliente para el servidor y otro para el cliente, además recuerda que en Java puedes jalar clases inclusive desde otro proyecto, para esto puedes agregar el proyecto cliente al build path del proyecto servidor, o empaquetarlo en un jar y agregarlo al build path.