Visual Basic - Winsock. Problemas

Life is soft - evento anual de software empresarial
 
Vista:

Winsock. Problemas

Publicado por Leandro (2 intervenciones) el 25/07/2002 19:06:18
Hola.. les comento que tengo un problema. Tengo armado dos programitas en VB, uno el Servidor (escucha en un puerto) y otro el cliente. Estoy usando el control Winsock con tcp.
El problema surge con el siguiente código que se encuentra en un boton:
tcpClient.Connect Adodc1.Recordset("maq_ip"), "1001"
tcpClient.SendData Mensaje
tcpClient.Close
El error que me da es porque la conexion nunca llega a realizarce. Se queda en el tcpClient.State = 6 (conectando) en vez del 7 (conectado).
Lo extraño es que si yo divido el codigo en dos botones, uno que conecte y otro que mande el mensaje funciona bien.
Alguien puede ayudarme?.
Desde ya muchas gracias.

Saludos. Leandro.
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:Winsock. Problemas

Publicado por César Ornelas (55 intervenciones) el 26/07/2002 07:29:56
el tiempo de coneccion no es inmediato y visual basic no espera a que la coneccion sea terminada, lo k puedes tratar es de usar un Do hasta k que el estado sea diferente de 6 (conectando)... por ejemplo

tcpClient.Connect Adodc1.Recordset("maq_ip"), "1001"
do while tcpClient.state = 6
' Que el programa no haga nada mientras se conecta
loop
' Verificar que la coneccion este hecha para mandar el mensaje
if tcpClient.status = 7 then
tcpClient.SendData Mensaje
tcpClient.Close
end if

espero te sirva por k no probe el codigo... jeje
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:Winsock. Problemas

Publicado por NO ANDUVO (2 intervenciones) el 26/07/2002 16:07:53
Hola, primero que nada te agradesco la rapida respuesta a mi problema. Pero te comento que sigo teniendo problemas. Puse el código que me decis y el estado no cambia hasta que no termine el código del procedimiento.
Te paso mi código para que lo veas:

Call Conectar(Adodc1.Recordset("maq_ip"), "1001") ' Solo hace el tcpClient.Connect
Call Armar_Accion(Mensaje)
While tcpClient.State = 6
MsgBox ("todavia aca....")
Wend
If tcpClient.State = 7 Then
tcpClient.SendData Mensaje
End If
tcpClient.Close

Pero puedo apretar un millon de veces "Aceptar" del mensaje "todavia aca..." que no sale del bucle.

Sigo insistiendo.... si esto lo divido en dos botones... uno que conecte y otro que mande el mensaje funciona 10 puntos.

Pero el problema es qeu no puedo hacer eso porque le tengo que mandar este mensaje como a 100 maquinas que tengo almacenadas en una tabla... imposible hacer dos click por cada maquina para mandarles el mensaje, no?, jaja

Bueno... espero tu respuesta... ya no se como hacerlo y el tiempo corre!!! :-((

Saludos.

Leandro.
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:Winsock. Problemas

Publicado por Tok (29 intervenciones) el 29/07/2002 11:06:20
Utiliza esta función a continuación del Connect, poniendo wait (5), que con 5 segundos si que funciona. El código es el siguiente:

Private Sub Wait(ByVal nSec As Integer)
'Esperar un número de segundos

Dim t1 As Date, t2 As Date
t1 = Second(Now)
t2 = t1 + nSec
If (t2 > 59) Then
t2 = t2 - 60
End If
Do
DoEvents
Loop While t2 > Second(Now)
End Sub

Espero que te sirva. Hasta luego. Tok

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