Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/04/2009, 16:30
Valentinoo
 
Fecha de Ingreso: abril-2007
Mensajes: 40
Antigüedad: 17 años, 1 mes
Puntos: 0
Escribir al mismo tiempo en el mismo socket

Hola a todos,

Acudo a vosotros para pediros ayuda relacionada con el envió de información por el mismo socket de varios hilos. Mi programa está formado por:
- un cliente que se conecta con el servidor y crear varios hilos. Cada hilo usa el mismo socket para enviar una petición y se queda esperando su respuesta. Una vez recibida la respuesta los hilos verifican si la respuesta le corresponde (lo puede verificar ya que al enviar la petición, esta es un ArrayList donde el primer elemento es un código único que tiene cada hilo y el segundo es realmente la petición y en la respuesta este código único se incluye). Si la respuesta le corresponde hace cosas y luego vuelve a hacer lo mismo y de lo contrario se queda esperando de nuevo su respuesta (es decir hace un readObject de ObjectInputStream).
- el servidor acepta la conexión del cliente y crear un hilo que se queda a la espera de peticiones (readObject de ObjectInputStream). Por cada petición recibida crea un nuevo hilo pasándole esa petición + el ObjectOutputStream para que pueda devolver el resultado y luego este hilo se muere.

Una vez arrancado el servidor si modifico el cliente para que solo tenga un hilo entonces todo funciona perfectamente, en cambio si dejo que genere varios hilos me peta. Los errores son varios :
A veces me da java.net.SocketException: Software caused connection abort: socket write error
Y otras veces
java.io.EOFException at java.io.ObjectInputStream$BlockDataInputStream.pee kByte(ObjectInputStream.java:2554)

Creo que el problema esta en que se intenta escribir al mismo tiempo en el mismo socket o algo asi.



Gracias de antemano.