In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Método CheckConnection para tFtp

Foro público de Xailer en español
Responder
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Método CheckConnection para tFtp

Mensaje 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
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Método CheckConnection para tFtp

Mensaje 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
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Método CheckConnection para tFtp

Mensaje 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
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Método CheckConnection para tFtp

Mensaje 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
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Método CheckConnection para tFtp

Mensaje 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
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Método CheckConnection para tFtp

Mensaje 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
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Método CheckConnection para tFtp

Mensaje 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
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Método CheckConnection para tFtp

Mensaje 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
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Método CheckConnection para tFtp

Mensaje por jlalin »

José Luis,
> Usas el flag FLAG_ICC_FORCE_CONNECTION en el segundo parámetro?
Sí­.
Saludos,
José Lalí­n
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Método CheckConnection para tFtp

Mensaje por jlalin »

José Luis,
creo que he encontrado algo. Luego te lo enví­o para que lo pruebes.
Saludos,
José Lalí­n
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Método CheckConnection para tFtp

Mensaje por jlalin »

José Luis,
quitando el flag devuelve siempre .T. hasta para sitios que no existen.
Saludos,
José Lalí­n
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Método CheckConnection para tFtp

Mensaje 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
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Método CheckConnection para tFtp

Mensaje 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
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Método CheckConnection para tFtp

Mensaje 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
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

Método CheckConnection para tFtp

Mensaje 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
Responder