Cómo puedo hacer que un main abra dos consolas distintas?

Iniciado por NikNitro!, 24 Mayo 2014, 12:45 PM

0 Miembros y 2 Visitantes están viendo este tema.

NikNitro!

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 (java) [Seleccionar]

public class Chat {
private Cliente  cl;
private Servidor sv;

public Chat() {
cl = new Cliente();
sv = new Servidor();
}

public Chat(String ipServ, int puertSend, int puertRec) {
cl = new Cliente(ipServ, puertSend);
sv = new Servidor(puertRec);
}

public void Arrancar() {
sv.Connect();
cl.Connect();
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Chat chat = new Chat();
chat.Arrancar();
}

}



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 (java) [Seleccionar]

public class Chat {
private Cliente  cl;
private Servidor sv;

public Chat() {
cl = new Cliente();
sv = new Servidor();
//////////////////////////////////////////////
Arrancar();
/////////////////////////////////////////////
}

public Chat(String ipServ, int puertSend, int puertRec) {
cl = new Cliente(ipServ, puertSend);
sv = new Servidor(puertRec);
}

////////////////////////////////////////////////////// Procedimiento Arrancar() cambiado entero
public void Arrancar() {
sv.start();
cl.start();

try {
sv.join();
cl.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
new Chat();
}

}



Migugami

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'.

NikNitro!

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

Migugami

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.