Visual Basic - Problemas con Winsock

Life is soft - evento anual de software empresarial
 
Vista:

Problemas con Winsock

Publicado por Enrique (20 intervenciones) el 21/03/2005 14:25:04
Disculpen, Tengo un prog. en VB Cliente y un Servidor que funcionaba perfectamente, en un momento se cortó la coneccion de intenet , el cliente intento conectarse cerrandose primero y el servidor dio un error , mis preguntas son las siguiente:

1) En algun lugar del Winsock cliente queda un cola de enviados y cuando se arregla la conecion de internet envia todo junto ?

2) Ejecutando Winsock.close en le cliente , como se entera el servidor de que el cliente se cerro si internet esta cortado ?

Muchas Gracias

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con Winsock

Publicado por Ayudante (349 intervenciones) el 21/03/2005 17:02:02
El socket es capaz de detectar la caida de comunicación, incluso tú mismo puedes simular caídas innesperadas, y la forma es muy simple, toma 2 máquinas (ojalá en red del tipo LAN), activas el servidor y conectas el cliente, luego quita el cable de alguna de las máquinas, y listo. Para eso deberías tener un control de eventos (log) para que veas los problemas o diferentes eventos que ocurren.

El problema es que en el servidor el socket se cierre, pero que no tenga la capacidad de volver a escuchar, eso sí es muy factible para que ocurran errores.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con Winsock

Publicado por Mike79 (97 intervenciones) el 22/03/2005 20:41:11
El winsock no tiene un "buffer" ni una "espera" para estos errores. Pero las comunicaciones TCP/IP si lo tienen. Si la comunicación se interrumpe solo por unos momentos, el socket se restablece y no hay perdida de datos (EL TCP no permite que se pierdan datos, el UDP si).

Lo que debes de hacer es poner un timer que este incrementando una variable, cada vez que recibas datos por el winsock resetea esta variable a 0, cuando llegues a 60 segnudos (o el tiempo que tu quieras), que envie un dato (los famosos ping), y que el servidor al recivir ese dato envie su respuesta (un pong), si despues de x tiempo tu no recives pong del servidor, entonces la conexion de tu cliente se corto y has que tu programa se desconecte y vuelva a conectar y este reintentando conectarse hasta que logre conectarse.

Algo muy parecido debes hacer con el servidor.

Otro tip, es que tu servidor pueda aceptar mas de 1 conexion por el mismo puerto. (Para que realmente sea un servidor). Consulta la ayuda de Visual Basic al respecto.

Lo mas probable es que tu servidor se cierre cuando el cliente este reconectandose por que quieres utilizar un socket que ya esta en uso para aceptar la conexion.

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar