Foro de elhacker.net

Programación => Java => Mensaje iniciado por: thurgrim en 16 Mayo 2009, 19:04 pm



Título: Dudas programacion sockets Java
Publicado por: thurgrim en 16 Mayo 2009, 19:04 pm
Hola a todos.
Actualmenete tengo que hacer varios programas cliente-servidor en java usando un servicio orientado a conexión (TCP).
Ya entiendo como funcionan las clases sokect y serverSocket, pero me quedan aún algunas dudas relativas a lo que puede ocurrir cuando hay algún problema en la conexión o cuando el cliente-servidor no se entendieron y alguno cierra la conexión:

*Si uno de los dos extremos de la conexión cierra esta misma, usando el método close(), cuando llamas a read() que yo sepa se leen los últimos bytes que se hayan enviado, y cuando se acaben se lee un -1 (en sucesivos intentos también se lee -1). En cambio si se intenta escribir debería saltar una excepción (SocketException).

*Si la conexión se ha roto por algún motivo (desconectamos el cable de red), creo que tanto tratando de leer como de escribir por el socket, debería de generarse una excepción (SocketException).

Mi problema es que parece que no siempre pasa así, no se si es que lo entiendo mal o es por algún otro motivo.


Título: Re: Dudas programacion sockets Java
Publicado por: Amerikano|Cls en 16 Mayo 2009, 20:59 pm
No le veo problema, se genera una excepcion  ;) que mas quieres saber?


Título: Re: Dudas programacion sockets Java
Publicado por: thurgrim en 16 Mayo 2009, 21:31 pm
Pues el problema es que no siempre pasa así.
Actualmente estoy haciendo el servidor de un chat, en el que se puden conectar clientes y enviar mensajes a todo el mundo a través del servidor.
Pues bien, lo que ocurre es que si ejecuto el programa cliente y desconecto su cable de red, cuando algún otro cliente escribe un mensaje, el servidor lo envia al cliente desconectado (al igual que a los demás) y no salta excepción.


Título: Re: Dudas programacion sockets Java
Publicado por: Amerikano|Cls en 16 Mayo 2009, 23:36 pm
Puede ser por la siguiente razon y es que el canal por el que envia los datos el servidor es distinto al canal por donde escucha el cliente, es por esto que el buffer puede quedar con los datos enviados asi no sean recibidos del todo (es simple idea  ;)), por esta razon no te votaria excepcion.

salu2


Título: Re: Dudas programacion sockets Java
Publicado por: thurgrim en 17 Mayo 2009, 00:27 am
No entiendo que quieres decir con eso del canal. Si te refieres al puerto, debería dar igual que en el que escucha el servidor y por el que recibe el cliente no sean el mismo, no?