Título: Esperar conexión de Winsock Publicado por: iaorengo en 8 Noviembre 2011, 02:47 am Buenas,
Estoy realmente agradecido por lo que me han ayudado y por la infinita información que pude encontrar. :D Pero ahora estoy ante un problema que no encontré solución y espero me puedan dar una manito. Estoy haciendo un Cliente-Servidor y tengo un problemita de "tiempo de demora" en el Winsock del Cliente. Ya que, con un botón solicito conexión con el Servidor pero como lleva un tiempo en conectar, me sale error al resto del sub, me dice que no tiene conexión. Si separo las funciones de Conectar y el resto en botones separadas, funciona perfecto. Les muestro: Citar Private Sub Command2_Click() If Command2.Caption = "Connect" Then Winsock1.RemoteHost = Text3.Text Winsock1.RemotePort = Text4.Text Winsock1.Close Winsock1.Connect If Winsock1.State <> sckConnected Then 'REPETIR HASTA QUE SEA IGUAL A CONECTADO PARA SALIR Y CONTINUAR EL SUB. End If Command2.Caption = "Disconnect" Command2.FontBold = False Else Winsock1.Close Text1.Text = Text1.Text & "*** Conexion cerrada por el usuario." & vbCrLf Command2.Caption = "Connect" Command2.FontBold = True End If End sub Lo que está en rojo es lo que se me ocurrió hacer para "esperar" a que se conecte el Winsock para poder continuar. Lo que necesito es algo para poder hacer esa "espera" que está en negrita. ¿Existe alguna forma de solucionar esto sin tener que usar el famoso y detestable Sleep? Desde ya, muchísimas gracias :) Título: Re: Esperar conexión de Winsock Publicado por: BlackZeroX en 8 Noviembre 2011, 03:42 am Winsock tiene un evento llamado: connect (o algo asi no recuerdo bien) de esa manera no nesesitas el Bucle feo ese que usas.
Dulces Luneas Título: Re: Esperar conexión de Winsock Publicado por: Elemental Code en 8 Noviembre 2011, 03:43 am para contestarte bien a tu pregunta.
en lugar de sleep algo "parecido" es DoEvents Título: Re: Esperar conexión de Winsock Publicado por: iaorengo en 8 Noviembre 2011, 03:56 am Utilicé:
Código: Do While Winsock1.State <> sckConnected No se como es que funciona porque no se que hace cuando está el "DoEvents" pero resultó de maravillas. Muchísimas gracias :) Voy a terminar pintando en la pared de mi habitación "elhacker.net" Son muy grosos. Título: Re: Esperar conexión de Winsock Publicado por: BlackZeroX en 8 Noviembre 2011, 04:12 am .
Es mejor que uses el evento: Código
Nota: DoEvents no tiene nada que ver con Sleep, es mas ni se parecen... pero tienen una relacion. Dulces Lunas!¡. Título: Re: Esperar conexión de Winsock Publicado por: Elemental Code en 8 Noviembre 2011, 10:20 am doevents cede el lugar enla cola del procesador a otro programa. Esto desencadena que nuestro programa espere.
Estoy seguro que es mejor como dice black. El problema que yo experimente con el doevents es que otros softwares tienen instrucciones muy complejas y no ceden el procesador. Entonces un doevents podria hacer esperar tu app por 30 seg o mas :S Título: Re: Esperar conexión de Winsock Publicado por: BlackZeroX en 8 Noviembre 2011, 10:31 am doevents cede el lugar enla cola del procesador a otro programa. Esto desencadena que nuestro programa espere. Nada que ver, el encargado de eso es el Scheduler del S.O (https://secure.wikimedia.org/wikipedia/es/wiki/Planificador). no de DoEvents... Lo que hace DoEvents es permitir a otr@(s) funciones/procesos su ejecucion como vb6 no permite Multihilos (Bueno si los permite pero son un ASCO la verdad) un simple Do While traba POR COMPLETO TU APP. Dulces Lunas!¡. Título: Re: Esperar conexión de Winsock Publicado por: BlackZeroX en 8 Noviembre 2011, 11:20 am El problema que yo experimente con el doevents es que otros softwares tienen instrucciones muy complejas y no ceden el procesador. Entonces un doevents podria hacer esperar tu app por 30 seg o mas :S Posiblemente pero tambien tiene que ver la prioridad con la que estan dichos PROGRAMAS ajenos al nuestro, solo tendriamos que cambiar la prioridad de la clase de nosotros para que asi el scheduler nos atienda mas frecuentemente... Mira te doy un ejemplo muy facil de entender que te acabo de hacer. En un form pega esto: Código
En un modulo: Código
Temibles Lunas!¡. Título: Re: Esperar conexión de Winsock Publicado por: raul338 en 8 Noviembre 2011, 19:20 pm Código
|