Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Problema con el evento SendComplete

Estas en el tema de Problema con el evento SendComplete en el foro de Visual Basic clásico en Foros del Web. Hola a todos: Estoy haciendo una aplicación cliente/servidor con Visual Basic 6. Para ello utilizo el control Winsock. Y ha ido funcionando perfectamente hasta ahora, ...
  #1 (permalink)  
Antiguo 12/09/2005, 06:19
 
Fecha de Ingreso: septiembre-2005
Mensajes: 8
Antigüedad: 18 años, 7 meses
Puntos: 0
Problema con el evento SendComplete

Hola a todos:

Estoy haciendo una aplicación cliente/servidor con Visual Basic 6. Para ello utilizo el control Winsock. Y ha ido funcionando perfectamente hasta ahora, que le ha dado por no saltar el evento SendComplete.

Al ejecutar el WS.SendData mensaje, el mensaje llega al servidor (lo he comprobado), pero no llega a saltar el evento SendComplete ni el SendProgress, con lo cual se me queda parado en el bucle que le tengo puesto:

WS.SendData mensaje
do
doevents
esperar 100
loop until enviocompleto=true

Ni que decir tiene que la variable enviocompleto la pone a True el evento SendComplete.

¿A alguien se le ocurre por qué puede estar ocurriendo ésto?

Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 12/09/2005, 07:20
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación

Cita:
Iniciado por mute
Hola a todos:

Estoy haciendo una aplicación cliente/servidor con Visual Basic 6. Para ello utilizo el control Winsock. Y ha ido funcionando perfectamente hasta ahora, que le ha dado por no saltar el evento SendComplete.

Al ejecutar el WS.SendData mensaje, el mensaje llega al servidor (lo he comprobado), pero no llega a saltar el evento SendComplete ni el SendProgress, con lo cual se me queda parado en el bucle que le tengo puesto:

WS.SendData mensaje
do
doevents
esperar 100
loop until enviocompleto=true

Ni que decir tiene que la variable enviocompleto la pone a True el evento SendComplete.

¿A alguien se le ocurre por qué puede estar ocurriendo ésto?

Muchas gracias de antemano.
Pues tal vez sea el esperar 100 ese el problema, porque el evento SendComplete sí se produce, ya lo he comprobado...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 12/09/2005, 08:09
 
Fecha de Ingreso: septiembre-2005
Mensajes: 8
Antigüedad: 18 años, 7 meses
Puntos: 0
No, el esperar no es el problema. Acabo de probar comentándolo y sigue igual. A mí también me saltaba el SendComplete, pero por algún motivo ha dejado de hacerlo. También he probado en otros ordenadores, y tengo el mismo resultado, no se lanza el evento. ¿Puede haber algo que esté inhibiendo dicho evento?
  #4 (permalink)  
Antiguo 12/09/2005, 08:10
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación

Cita:
Iniciado por mute
No, el esperar no es el problema. Acabo de probar comentándolo y sigue igual. A mí también me saltaba el SendComplete, pero por algún motivo ha dejado de hacerlo. También he probado en otros ordenadores, y tengo el mismo resultado, no se lanza el evento. ¿Puede haber algo que esté inhibiendo dicho evento?
Pues insisto que el esperar es el problema, dime qué es lo que hay en ese procedimiento...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 12/09/2005, 08:19
 
Fecha de Ingreso: septiembre-2005
Mensajes: 8
Antigüedad: 18 años, 7 meses
Puntos: 0
La verdad es que se me hace extraño que, habiéndolo comentado, pueda interferir. Pero bueno, este es el código de "esperar":

'
' SIPNOSIS: esperar
'
' ENTRADA:
' Ningún argumento de entrada
'
' SALIDA:
' Ningún argumento de salida
'
' FUNCIONAMIENTO: Procedimiento que incorpora ciclos de espera de un tiempo
' determinado.
'_________________________________________________ ___________________________________

Public Sub esperar(ByVal numMiliSeg As Long)
Dim TmFin As Long
Dim TmEspera As Long 'Valor de la espera (en Mseg)

TmEspera = numMiliSeg
TmFin = GetTickCount + TmEspera
Do While GetTickCount < TmFin
DoEvents
Loop
End Sub


Este es el código del envío:

Public Function enviar(Socket As Winsock, mensaje As String) As Integer
On Error GoTo manejoerror
If (Socket.State = sckOpen Or Socket.State = sckConnected) Then
Socket.SendData mensaje

Do
' esperar 100
DoEvents
Loop While (Not enviocompleto)
enviocompleto = False
End If

enviar = 0
Exit Function
manejoerror:
enviar = 1
Exit Function
End Function


Y este el del SendComplete (trivial):

Private Sub WSFaplicacion_SendComplete()
enviocompleto = True
End Sub

Si te hace falta algo más, dímelo.
  #6 (permalink)  
Antiguo 12/09/2005, 09:41
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
El Código hasta ahí está bien, pues lo probé ahora, y sigue funcionandome, tal vez hayas cambiado el nombre del Winsock y en el evento consta diferente, tal vez por eso no te produce el evento....
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 12/09/2005, 09:54
 
Fecha de Ingreso: septiembre-2005
Mensajes: 8
Antigüedad: 18 años, 7 meses
Puntos: 0
Buf, pues me temo que no he cambiado el nombre del Winsock. Chico, me estoy volviendo loco con este error, creo que lo dejaré hasta mañana. ¿No tendrá nada que ver que la función de enviar esté en un módulo, la variable enviocompleto esté también en ese módulo y el Winsock y toda su funcionalidad en un formulario? Es que ya no se me ocurre nada...
  #8 (permalink)  
Antiguo 12/09/2005, 10:26
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
vos lo ke keres es tomar la info del senddata ?
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #9 (permalink)  
Antiguo 12/09/2005, 10:33
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo

Cita:
Iniciado por mute
Buf, pues me temo que no he cambiado el nombre del Winsock. Chico, me estoy volviendo loco con este error, creo que lo dejaré hasta mañana. ¿No tendrá nada que ver que la función de enviar esté en un módulo, la variable enviocompleto esté también en ese módulo y el Winsock y toda su funcionalidad en un formulario? Es que ya no se me ocurre nada...
Sí, tal vez esi de la variable enviocompleto esté siendo el causante de todo el problema, sería mejor si lo declararas así:
Código:
Global EnvioCompleto As Boolean
si ahí no te funciona, ya no sé...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 12/09/2005, 10:51
Avatar de aldo1982  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Fe (Argentina) Colon F.C
Mensajes: 1.362
Antigüedad: 19 años, 5 meses
Puntos: 6
Cita:
Iniciado por David el Grande
Sí, tal vez esi de la variable enviocompleto esté siendo el causante de todo el problema, sería mejor si lo declararas así:
Código:
Global EnvioCompleto As Boolean
si ahí no te funciona, ya no sé...
creo ke voy a tener ke necesitar un muy buen manual de winsockt :((( hay cosas ke nuntiendo o sea ke nunca las vi, podrian pasarme algun tutorial ?? salu2


Pd: toy haciendo un aplicacion cliente/servidro con winsock y ya aprendi vastante, lo ke pasa ke hay cosas ke tengo varias dudas y con ejemplosy tutoriales de a pokito las voy a prendiendo


salu2 nuevamente y gracias
__________________
LA MUERTE ESTÁ TAN SEGURA DE VENCER QUE NOS DA TODA UNA VIDA DE VENTAJA
  #11 (permalink)  
Antiguo 13/09/2005, 02:06
 
Fecha de Ingreso: septiembre-2005
Mensajes: 8
Antigüedad: 18 años, 7 meses
Puntos: 0
Cita:
Iniciado por David el Grande
Sí, tal vez esi de la variable enviocompleto esté siendo el causante de todo el problema, sería mejor si lo declararas así:
Código:
Global EnvioCompleto As Boolean
si ahí no te funciona, ya no sé...
Lo he probado y tampoco tira. No llega a saltar el SendComplete. Sin embargo, he probado a hacer un ejemplo más pequeño, y ahí sí que funciona bien, así que descarto que sea un problema con la librería Winsock. Otra cosa es que se haya cambiado alguna librería que necesitara en ese proyecto por la instalación de algún programa, y la haya liado. ¿Podría ser algo de eso? ¿Se te ocurre cómo podría comprobarlo?

Vamos, que si lo veo mal me cargo el bucle y hago un acto de fe suponiendo que todo va a ir bien, pero ese será únicamente el último recurso...

De todas formas, muchas gracias por tu ayuda.
  #12 (permalink)  
Antiguo 13/09/2005, 14:36
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo

Cita:
Iniciado por mute
Lo he probado y tampoco tira. No llega a saltar el SendComplete. Sin embargo, he probado a hacer un ejemplo más pequeño, y ahí sí que funciona bien, así que descarto que sea un problema con la librería Winsock. Otra cosa es que se haya cambiado alguna librería que necesitara en ese proyecto por la instalación de algún programa, y la haya liado. ¿Podría ser algo de eso? ¿Se te ocurre cómo podría comprobarlo?

Vamos, que si lo veo mal me cargo el bucle y hago un acto de fe suponiendo que todo va a ir bien, pero ese será únicamente el último recurso...

De todas formas, muchas gracias por tu ayuda.
Tal vez si lo ejecutas en modo de depuración....
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #13 (permalink)  
Antiguo 14/09/2005, 00:52
 
Fecha de Ingreso: septiembre-2005
Mensajes: 8
Antigüedad: 18 años, 7 meses
Puntos: 0
¿Quieres decir paso a paso? Lo voy ejecutando así: Le pongo un punto de interrupción justo antes de enviar datos por el socket, y a partir de ahí ejecuto paso a paso. Y nada, se queda en el bucle sin llegar a saltar el SendComplete. Desesperante.
  #14 (permalink)  
Antiguo 16/09/2005, 05:04
 
Fecha de Ingreso: septiembre-2005
Mensajes: 8
Antigüedad: 18 años, 7 meses
Puntos: 0
Por si a alguien le puede servir para algo, parece que el fallo viene de enviar los datos antes de que se termine de cargar el formulario. He probado a enviarlo después de terminar la carga del formulario y funciona bien. De todas formas, gracias por vuestra ayuda.

Una pregunta más: ¿Cómo puedo hacer que se ejecute el envío justo después de la carga del formulario? He probado a poner ese código en el evento Activate porque creía que este evento saltaba después de la carga, pero se me ejecuta antes de terminar de cargarlo.

Muchas gracias y un saludo...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:17.