La Web del Programador: Comunidad de Programadores
 
    Pregunta:  57197 - PROBLEMA CON SOCKETS TCP
Autor:  hadrien
Hola, estoy desarrollando un programa servidor-cliente (y cliente-cliente (p2p)) con Sockets y no tengo mucha experiencia con ello, por lo que me gustaría exponer unas dudas.

De momento, he creado una classe que se ocupa de manejar la conexión del servidor con el cliente y otra que hace la inversa y me funciona, pero el cliente debe tener la opción de poder conectarse a otro cliente, del que previamente el servidor le habrá pasado ip y puerto, y aquí tengo un problema. En la clase que maneja la conexión cliente-servidor con un socket, creo otro Socket o ServerSocket (según la petición) para conectarse con otro cliente pero me sale el error de "connection reset" y no sé muy bien dónde está el error, si en el hecho de que debería crear otro handler aparte, si en los puertos e ip de ejemplo (de momento sólo puedo probar con localhost...), etc.

¿Alguien me puede echar un cable?

¡¡Gracias de antemano!!

  Respuesta:  hadrien
Hola,

Como el cliente puede hacer de cliente y servidor a la vez, de momento lo he solucionado de esta forma:

try {
Socket s = new Socket(ip, serverport);
System.out.println("Socket created!");
new ClientHandler(s).start();
} catch (IOException e) {
System.out.println("Could not accept " + e);
}

try {
ServerSocket clientserver = new ServerSocket(port);
Socket upclient = clientserver.accept();
System.out.println("Connection from other client accepted!");
new ClientHandler(upclient).start();
} catch (IOException e) {
System.out.println("Could not accept " + e);
}

Aunque faltan por pulir algunos detalles...

Saludos.