Hola, de nuevo por aquí exponiendo mis problemas.
Resulta que estoy desarrollando un chat en Java, en arquitectura Cliente/Servidor.
Bien, de momento el Cliente solo se dedica a enviar un Nick, introducido desde un jTextField y si es aceptado por el servidor, entra a a los hilos que le permite recibir y enviar información desde/hasta el servidor.
El servidor, como es normal, es mucho mas complejo, este recibe el Nick del cliente en cuestión, comprueba que no existe ese Nick ya en chat ( si está le envía una notificación al cliente ) por lo que al cliente se le obliga a elegir otro Nick, en caso de que no exista, se introduce en una Collection donde estarán todos los objetos con sus respectivos Nick y además se les adjunta el Socket que se ha generado.
Bien, mi problema es el siguiente:
Para recibir flujos de todos los clientes conectados lo que hago es lo siguiente.
Tengo una clase que hereda de Thread, y en su constructor se pasa la Collection de Clientes.
Pues dentro de este run existe un bucle while que recorre la Collection, saca el Cliente, saca el Socket del Cliente e intenta obtener el InputStream del Socket del Cliente, pero no se que pasa que no funciona.
Os pego el código y a ver si me arrojáis algo de luz o, si alguien ha creado un chat alguna vez me puede indicar como lo hizo el, este chat lo estoy haciendo por que yo quiero, para aprender algunas cosillas mas, etc.
@Override
public void run()
{
String dReceive = "";
while(sr.getStateServer())
{
for(Client c: al)
{
try {
Socket s = c.getSocket();
ois = new ObjectInputStream( s.getInputStream() );
dReceive = (String) ois.readObject();
System.out.println(dReceive);
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
Un saludo y gracias.