PROBLEMA CON LOS INET (put,get..)

Viska
19 de Diciembre del 2005
Hola!
Estoy creando un msn casero para una red local, y funciona, os explico el funcionamiento basico:
Por medio de un directorio comun a todos usuarios cada usuario lee periodicamente sus archivos de \"recepcion\" en el directorio comun y envia, sustituyendo, los archivos correspondientes de \"envio\" para que los demas usuarios los capten cuando lean sus correspondientes archivos de \"recepcion\", ya se que es un poco \"a pedales\", jeje, pero me hace ilusion, y en una lan, con un directorio comun cualquiera, funciona perfectamente.

La cosa es que he pensado que si este directorio comun fuese un servidor web, por ejemplo ftp.usuarios.lycos.es/usuario, el msn serviria no solo en una lan, sino desde cualquier pc del mundo! xDD

Descubri el objeto inet, para descargar y subir archivos al servidor en cuestion, y bueno, logre que funcionara, pero si lo meto ya en el programa completo, que hay que usar varios put y get, da incongruencias, no errores de compilacion o sintaxis, sino simplemente se bloquea en mitad de ejecucion y mientras realiza el primer put...
No entiendo porque me falla, asi que os envio el trozito de codigo el que da el error, y solucionando ese, todo lo demas podre solucionarlo tambien...

Este es:
-------------------------------
For x = 0 To 14

If x + 1 < 10 Then
recep = \"0\" & x + 1
Else
recep = x + 1
End If
Open Form1.Label1.Caption & \"_\" & recep & \".txt\" For Output As #1

Write #1, \"INICIO SESION -- \" & Time
Close #1
Open recep & \"_\" & Form1.Label1.Caption & \".txt\" For Output As #1
Write #1, \"fich_eof\"
Close #1
Inet3.Execute , _
\"put \" & Form1.Label1.Caption & \"_\" & recep & \".txt \" & Form1.Label1.Caption & \"_\" & recep & \".txt\"
While Inet3.StillExecuting = True
Wend
Inet4.Execute , _
\\'\"put \" & recep & \"_\" & Form1.Label1.Caption & \".txt \" & recep & \"_\" & Form1.Label1.Caption & \".txt\"
While Inet4.StillExecuting = True
Wend
Next

-----------------------------------
Como veis no parece haber ningun error sintactico...
Es posible que la forma de controlar el inet.stillexecuting no sea la correcta?
Decir que los dos inet, tanto el 3 como el 4 conectan al mismo servidor, haciendolo con el mismo inet pasa ba lo mismo de toas formas...
Probando solo con un put tambien se bloquea...

Muchas Gracias de antemano,
que vosotros sois los expertos! xD
Saludos, Viska.

Ghost
19 de Diciembre del 2005
Bien, prueba a poner dentro de los Whiles \'DoEvents\'
Es decir:
While Inet4.StillExecuting = True
DoEvents
Wend

DoEvents hace que todos los eventos que se den, se puedan dar. Es decir, si inicias un bucle, el procesador hace únicamente lo del bucle, pero no capta eventos externos ya que procesa secuencialmente. Para que procese esos eventos entre iteración y iteración, pon DoEvents que como su nombre inidca, genera los eventos necesarios.

Oie, yo tengo otra pregunta. Yo también estoy haciendo un programa con el Inet pero tengo un problema, cuando digo de cerrar el programa, se bloquea. Mírate el código a ver si me sabes decir como lo solucionaste tu:

efanet.Protocol = icFTP
efanet.URL = "" \'El ftp no es mío, no te puedo poner esta información
efanet.UserName = ""
efanet.Password = ""
Do While efanet.StillExecuting
DoEvents
Loop
efanet.Execute , "dir"
Do While efanet.StillExecuting
DoEvents
Loop
MsgBox efanet.GetChunk(1024, icString)
efanet.Execute , "quit"
Do While itcFTP.StillExecuting
DoEvents
Loop
MsgBox "cerrado"

En fin, intenta poner esto en el evento Activate de un form y cuando te salga el mensage de \'cerrado\', intenta cerrar el form. A mi se me bloquea, tanto manualmente como por código.

P.D.: Si no te importa, agradecería mucho que me enviaras la respuesta a mi mail ([email protected])
Gracias