Página 1 de 1

Método CheckConnection para tFtp

Publicado: Jue Ene 24, 2013 11:53 am
por jose.luis
Hola a todos,
Hace tiempo que no me paseaba por aquí­....
Quisiera saber si se puede verificar sobre un tFtp que la conexión sigue
'viva'.
En la clase tInternet está el método 'CheckConnection'... pero no he sabido
hacerlo funcionar con tFtp.
¿Sabrí­ais decirme si se puede?
Saludos y gracias!
José Luis Capel

Método CheckConnection para tFtp

Publicado: Jue Ene 24, 2013 4:40 pm
por jlalin
José Luis,
acabo de probarlo y funciona correctamete:
WITH OBJECT TFTP():Create()
IF :Open()
IF :Connect( "ftp.mozilla.org" )
MsgInfo( :CheckConnection( "ftp://ftp.mozilla.org" ) )
ELSE
MsgInfo( :GetErrorDescription() )
ENDIF
:Close()
ENDIF
END
Saludos,
José Lalí­n

Método CheckConnection para tFtp

Publicado: Vie Ene 25, 2013 1:36 pm
por jose.luis
Hola José,
He estado probando en varios ftp distintos y veo que en alguno el
CheckConnection devuelve .F. mientras en otros si.
Las pruebas las hice inicialmente con un ftp que siempre me devuelve .F.
Si quieres, por privado te paso los datos de acceso para probar con el mismo
ejemplo y ver que devuelve .F. (y está conectado).
Saludos,
José Luis Capel
"José Lalí­n" escribió en el mensaje de
noticias:51015583$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
José Luis,
acabo de probarlo y funciona correctamete:
WITH OBJECT TFTP():Create()
IF :Open()
IF :Connect( "ftp.mozilla.org" )
MsgInfo( :CheckConnection( "ftp://ftp.mozilla.org" ) )
ELSE
MsgInfo( :GetErrorDescription() )
ENDIF
:Close()
ENDIF
END
Saludos,
José Lalí­n

Método CheckConnection para tFtp

Publicado: Vie Ene 25, 2013 2:10 pm
por jlalin
José Luis,
> He estado probando en varios ftp distintos y veo que en alguno el
> CheckConnection devuelve .F. mientras en otros si.
asegúrate de pasar el nombre correctamente si no no funcionará. Por
ejemplo, este funciona:
MsgInfo( :CheckConnection( "ftp://ftp.mozilla.org" ) )
Y este no:
MsgInfo( :CheckConnection( "ftp.mozilla.org" ) )
Imagino que el API espera la URL con el protocolo y si no falla.
Por otra parte, prueba a hacerlo a mano:
* Usa un TTimer() con el intervalo que necesites y cada vez que se ejecute
haces: oFTP:Command( "NOOP" )
Saludos,
José Lalí­n

Método CheckConnection para tFtp

Publicado: Vie Ene 25, 2013 4:02 pm
por jose.luis
José,
Gracias por tu respuesta.
Lo he probado siguiendo tu ejemplo (poniendo el 'ftp://' antes de la url en
el checkconnection).
Me pasa con dos ftps distintos.
¿Qué se hace en esa función? ¿Puede ser que ese ftp que falla (un linux)
devuelva una valor distinto al resto (en el checconnection) y por eso
devuelve un .F.?
Saludos y gracias,
José Luis Capel
"José Lalí­n" escribió en el mensaje de
noticias:510283ff$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
José Luis,
> He estado probando en varios ftp distintos y veo que en alguno el
> CheckConnection devuelve .F. mientras en otros si.
asegúrate de pasar el nombre correctamente si no no funcionará. Por
ejemplo, este funciona:
MsgInfo( :CheckConnection( "ftp://ftp.mozilla.org" ) )
Y este no:
MsgInfo( :CheckConnection( "ftp.mozilla.org" ) )
Imagino que el API espera la URL con el protocolo y si no falla.
Por otra parte, prueba a hacerlo a mano:
* Usa un TTimer() con el intervalo que necesites y cada vez que se ejecute
haces: oFTP:Command( "NOOP" )
Saludos,
José Lalí­n

Método CheckConnection para tFtp

Publicado: Vie Ene 25, 2013 6:24 pm
por jlalin
José Luis,
> ¿Qué se hace en esa función? ¿Puede ser que ese ftp que falla (un linux)
> devuelva una valor distinto al resto (en el checconnection) y por eso
> devuelve un .F.?
Pues no sé qué hace internamente. La documentación es esta:
http://msdn.microsoft.com/en-us/library ... sktop/aa38 4346%28v=vs.85%29.aspx
¿Has probado de la otra manera?
Saludos,
José Lalí­n

Método CheckConnection para tFtp

Publicado: Vie Ene 25, 2013 7:49 pm
por jlalin
José Luis,
creo que CheckConnection() funciona con algunos servidores porque aceptan
conexiones anónimas pero falla con los que no.
He probado con la forma estándar que funciona con cualquier navegador:
IF !oFtp:CheckConnection( "ftp://" + oFtp:cUser + ":" + oFtp:cPassword" +
"@ftp.servidor.es" )
MsgInfo("Error Check Connection : "+tostring( GetLastError() ) )
ENDIF
Y tampoco, devuelve error 12015 que significa fallo en el login, así­ que me
imagino que no puede hacerse de esta manera.
Saludos,
José Lalí­n

Método CheckConnection para tFtp

Publicado: Sab Ene 26, 2013 10:26 am
por jose.luis
Hola José,
Usas el flag FLAG_ICC_FORCE_CONNECTION en el segundo parámetro?
Saludos,
José Luis Capel
"José Lalí­n" escribió en el mensaje de noticias:[email=5102bf28@svctag-j7w3v3j....]5102bf28@svctag-j7w3v3j....[/email]
José Luis,
> ¿Qué se hace en esa función? ¿Puede ser que ese ftp que falla (un linux)
> devuelva una valor distinto al resto (en el checconnection) y por eso
> devuelve un .F.?
Pues no sé qué hace internamente. La documentación es esta:
http://msdn.microsoft.com/en-us/library ... sktop/aa38 4346%28v=vs.85%29.aspx
¿Has probado de la otra manera?
Saludos,
José Lalí­n

Método CheckConnection para tFtp

Publicado: Sab Ene 26, 2013 11:55 am
por jlalin
José Luis,
> Usas el flag FLAG_ICC_FORCE_CONNECTION en el segundo parámetro?
Sí­.
Saludos,
José Lalí­n

Método CheckConnection para tFtp

Publicado: Sab Ene 26, 2013 12:03 pm
por jlalin
José Luis,
creo que he encontrado algo. Luego te lo enví­o para que lo pruebes.
Saludos,
José Lalí­n

Método CheckConnection para tFtp

Publicado: Sab Ene 26, 2013 12:15 pm
por jlalin
José Luis,
quitando el flag devuelve siempre .T. hasta para sitios que no existen.
Saludos,
José Lalí­n

Método CheckConnection para tFtp

Publicado: Lun Ene 28, 2013 1:54 pm
por jose.luis
José,
Entonces la respuesta de esa función de MS es incoherente según al FTP al
que le hagas la consulta... Viendo esto... no tengo claro si esa función
deberí­a seguir para la clase tFTP... ¿cómo lo ves?
Saludos,
José Luis Capel
"José Lalí­n" escribió en el mensaje de
noticias:5103baba$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
José Luis,
quitando el flag devuelve siempre .T. hasta para sitios que no existen.
Saludos,
José Lalí­n

Método CheckConnection para tFtp

Publicado: Lun Ene 28, 2013 5:35 pm
por jlalin
José Luis,
de momento la dejaré como VIRTUAL para no romper código antiguo hasta que
encuentre el porqué de estos resultados tan extraños.
Saludos,
José Lalí­n

Método CheckConnection para tFtp

Publicado: Lun Ene 28, 2013 7:45 pm
por jlalin
José Luis,
la función está bien. Lo que está mal es la documentación que hice cuando
escribí­ la clase por un error de interpretación.
Lo que hace el API es intentar tirarle un ping al servidor indicado en la
URL y ese .T./.F. es lo que devuelve. Por eso es necesario pasarle la URL
en formato <protocolo>://<servidor> (pe. http://www.google.com)
MsgInfo( :CheckConnection( "ftp://ftp.mozilla.org" ) )
MsgInfo( :CheckConnection( "http://www.google.com" ) )
MsgInfo( :CheckConnection( "hgddfdfttp://www.google.com" ) )
MsgInfo( :CheckConnection( "www.google.com" ) )
Los tres primeros devuelven .T. porque la función recibe la URL en el
formato correcto (otra cosa es que hgddddfdf:// no sea válido y lo ignore)
y le tira el ping a mozilla.org y google.com mientras que la última falla
porque no se le ha pasado el protocolo.
Por tanto, este método debe usarse para comprobar si hay una conexión
activa a la red pero no para comprobar si estamos conectados a una URL
especí­fica.
Espero que ahora esté más claro.
Saludos,
José Lalí­n

Método CheckConnection para tFtp

Publicado: Mar Ene 29, 2013 9:25 am
por jose.luis
José,
No debe ser un ping... o por lo menos con mi ftp funciona el ping..
Es decir, yo hago 'ping ftp.misitio.com' desde la lí­nea de comando y me
responde correctamente.
Sin embargo, el checkConnection("ftp://ftp.misitio.com") me devuelve .F.
En todo caso, gracias por tu ayuda.
Saludos,
José Luis Capel
"José Lalí­n" escribió en el mensaje de
noticias:5106c6fa$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
José Luis,
la función está bien. Lo que está mal es la documentación que hice cuando
escribí­ la clase por un error de interpretación.
Lo que hace el API es intentar tirarle un ping al servidor indicado en la
URL y ese .T./.F. es lo que devuelve. Por eso es necesario pasarle la URL
en formato <protocolo>://<servidor> (pe. http://www.google.com)
MsgInfo( :CheckConnection( "ftp://ftp.mozilla.org" ) )
MsgInfo( :CheckConnection( "http://www.google.com" ) )
MsgInfo( :CheckConnection( "hgddfdfttp://www.google.com" ) )
MsgInfo( :CheckConnection( "www.google.com" ) )
Los tres primeros devuelven .T. porque la función recibe la URL en el
formato correcto (otra cosa es que hgddddfdf:// no sea válido y lo ignore)
y le tira el ping a mozilla.org y google.com mientras que la última falla
porque no se le ha pasado el protocolo.
Por tanto, este método debe usarse para comprobar si hay una conexión
activa a la red pero no para comprobar si estamos conectados a una URL
especí­fica.
Espero que ahora esté más claro.
Saludos,
José Lalí­n