problema winsock proxy vb

niko md
10 de Noviembre del 2005
Saludos a todos los usuarios,

Estoy haciendo un programa que sirva a modo de proxy entre una aplicación en el cliente y un servidor, para poder modificar los datos que son mandados a mi antojo.

Esta aplicación del cliente puede conectar con el puerto 80 del servidor y puede realizar múltiples conexiones a otro puerto definido. En el proxy tengo solucionado lo de las múltiples conexiones mediante una matriz de controles Winsock los cuales se van cargando en tiempo de ejecución y cuyo Winsock de índice 0 es el que escucha. Está probado y funciona correctamente. En el caso del puerto 80 lo tengo solucionado mediante un Winsock que escucha y cuando existe una petición de conexión se cierra el Winsock y se acepta. Tras enviar la información solicitada, se cierra y se pone de nuevo en modo de escucha. También está probado y funciona correctamente.

El problema surge cuando ejecuto el programa con compilación completa, le doy al botón "Listen" (me pone los dos Winsock en estado de escucha) y cierro el programa (al cerrar me cierra todos los Winsock de forma correcta y los que han sido creados en tiempo de ejecución los descarga), pues bien, si ejecuto la aplicación del cliente y la hago funcionar de forma normal todo va de maravilla. Pero si no la pongo en marcha y lo que hago es cerrar directamente el proxy, se me queda colgado el Visual Basic.

He probado a generar el ejecutable, y cuando lo ejecuto y pruebo a hacer lo mismo, el programa se cierra perfectamente pero si miro el Administrador de Tareas de Windows sigue el proceso ahí en estado de "No responde".

Me he dado cuenta que cuando ejecuto el programa (bien mediante el ejecutable o bien mediante compilación desde el Vb) y ejecuto también la aplicación del cliente de forma normal, habiendo transacciones a traves de "Cliente-Proxy-Server", y luego los cierro de forma normal (no se queda ningún proceso activo). Tras esto, hay un tiempo de unos minutos en los que puedo ejecutar el proxy, ponerlo en modo de escucha y cerrarlo y no se cuelga ni se queda el proceso corriendo!!!

He compilado codigos fuente de proxys sencillos que existen por las webs de programación, y con todos me sucede lo mismo. Esto me lleva a pensar que puede ser un problema de mi sistema operativo o bien un problema común a toda la gente cuando usa controles Winsock con algún problema relativo a los estados de conexión, pero como no tengo conocimientos profundos sobre este tema no estoy seguro.

Mi sistema operativo es Microsoft Windows XP Profesional SP1, y tengo el Microsoft Visual Basic 6.0 (Version 8176).

Si alguien pudiera decirme cuál es el motivo que me está causando este problema le estaría muy agradecido.

Gracias de antemano.

niko md
10 de Noviembre del 2005
Simplemente era para decir que he instalado el SP5 para el Visual Basic 6 y sigue dándome el mismo problema.

Cosme
10 de Noviembre del 2005
Probaste con descargar todos los controles agregados recorriendo form.controls y cuando da error ponele un resume next, asi te descarga primero todos los winsock, ademas me parece que primero tenes que sacarlos de escucha a los winsock antes de descargarlos, proba asi. Saludos