Page 1 of 1

conectar a FTP

Posted: Sat Apr 25, 2020 4:31 pm
by edufloriv
Saludos,

Tengo este código para conectar a host via FTP:

Code: Select all

FUNC FTPConectar

LOCAL cUrl
LOCAL cStr
LOCAL oUrl
LOCAL cUser
LOCAL cServer
LOCAL cPassword
LOCAL cFile     := ""
LOCAL lRetorno  := .F.

   oUrl            := tUrl():New()
   oUrl:cProto     := 'ftp'
   oUrl:cServer    := FTP_SERV
//   oUrl:cPath      := cRemotePath
//   oUrl:cFile      := cRemoteFileName
   oUrl:cUserid    := FTP_USER
   oUrl:cPassword  := FTP_PASS
   oFtp            := tIPClientFtp():New( oUrl , .T. )

   IF oFTP:Open()
      lFTP := .T.
      lRetorno := .T.
   ELSE
      cStr := "No se ha podido conectar con el servidor FTP" + " " + oURL:cServer
      IF oFTP:SocketCon == NIL
         cStr += Chr( 13 ) + Chr( 10 ) + "Conexión no inicializada"
      ELSEIF hb_InetErrorCode( oFTP:SocketCon ) == 0
         cStr += Chr( 13 ) + Chr( 10 ) + "Respuesta del servidor:" + " " + oFTP:cReply
      ELSE
         cStr += Chr( 13 ) + Chr( 10 ) + "Error en la conexión:" + " " + hb_InetErrorDesc( oFTP:SocketCon )
      ENDIF
      MsgInfo('Error: '+cStr)
      lRetorno := .F.
   ENDIF

RETURN(lRetorno)
Cuando conecto con los datos de mi host propio, funciona perfectamente, pero cuando trato de usar los datos de conexión de mi cliente me lanza el error:

"Error en la conexión: HOSTNOTFOUND"

El proveedor del host de mi cliente me envio estos datos:

Nombre de usuario de FTP: FTP_USER (este usuario NO temina en @FTP_SERV )
Servidor FTP: FTP_SERV
Puerto FTPS explícito de FTP &: 21

Cuando los uso en FileZilla me conecto sin problema.

Agradeceré una ayuda al respecto. Cordiales saludos.

*----------------------------------------------------------------------------------------------------------------
*----------------------------------------------------------------------------------------------------------------
*----------------------------------------------------------------------------------------------------------------

Hi,

I have this code to conect to a FTP host:

Code: Select all

FUNC FTPConectar

LOCAL cUrl
LOCAL cStr
LOCAL oUrl
LOCAL cUser
LOCAL cServer
LOCAL cPassword
LOCAL cFile     := ""
LOCAL lRetorno  := .F.

   oUrl            := tUrl():New()
   oUrl:cProto     := 'ftp'
   oUrl:cServer    := FTP_SERV
//   oUrl:cPath      := cRemotePath
//   oUrl:cFile      := cRemoteFileName
   oUrl:cUserid    := FTP_USER
   oUrl:cPassword  := FTP_PASS
   oFtp            := tIPClientFtp():New( oUrl , .T. )

   IF oFTP:Open()
      lFTP := .T.
      lRetorno := .T.
   ELSE
      cStr := "No se ha podido conectar con el servidor FTP" + " " + oURL:cServer
      IF oFTP:SocketCon == NIL
         cStr += Chr( 13 ) + Chr( 10 ) + "Conexión no inicializada"
      ELSEIF hb_InetErrorCode( oFTP:SocketCon ) == 0
         cStr += Chr( 13 ) + Chr( 10 ) + "Respuesta del servidor:" + " " + oFTP:cReply
      ELSE
         cStr += Chr( 13 ) + Chr( 10 ) + "Error en la conexión:" + " " + hb_InetErrorDesc( oFTP:SocketCon )
      ENDIF
      MsgInfo('Error: '+cStr)
      lRetorno := .F.
   ENDIF

RETURN(lRetorno)
When I connect to my own host it works perfectly, but when I change to connexion data of my client (FTP_SERV,FTP_USER,FTP_PASS), who has got a new host, it doesn´t connect ("Error en la conexión: HOSTNOTFOUND")

The host provider gave me this data connection:

Nombre de usuario de FTP: FTP_USER (this ftp name user don´t end in @FTP_SERV )
Servidor FTP: FTP_SERV
Puerto FTPS explícito de FTP &: 21

Could somebody help me please.

Thanks a lot.

Re: conectar a FTP

Posted: Sat Apr 25, 2020 11:19 pm
by danielmaximiliano
Edu : El servidor puede rechazarte por nombre de usuario o password incorrectos, una mala negociacion de protocolos de conexion, mal puerto de conexión.
HOSTNOTFOUND correponde a que el servidor DNS con pudo estalecer su ubicacion en sus registros. desde la consola DOS haz un ping a la direccion IP para saber si te responde -
FileZilla tiene una capacidad de determinar la negociacion si es FTP o FTPS en el caso de la libreria de harbour no tiene creo esa capacidad

Re: conectar a FTP

Posted: Fri May 08, 2020 4:44 pm
by edufloriv
Hola Daniel,

Si, mil gracias, ya lo resolví, le quite al USER lo que va despues de la arroba, el codigo me quedo asi y con esto funcionó, leí por alli que al usar tUrl() se demora milesimas de segundos más pero es casi impercetible.

Code: Select all

FUNC FTPConectar

LOCAL cUrl
LOCAL cStr
LOCAL oUrl
LOCAL cUser
LOCAL cServer
LOCAL cPassword
LOCAL cFile     := ""
LOCAL lRetorno  := .F.

   oUrl               := tUrl():New()
   oUrl:cProto        := 'ftp'
   oUrl:cServer       := FTP_SERV
   oUrl:cUserid       := FTP_USER
   oUrl:cPassword     := FTP_PASS
   oUrl:cPath         := ''
   oUrl:cFile         := ''
   oFtp               := tIPClientFtp():New( oUrl , .F. )
   oFTP:nConnTimeout  := 40000
   oFTP:bUsePasv      := .T.

   IF oFTP:Open()
      lFTP := .T.
      lRetorno := .T.
   ELSE
      cStr := "No se ha podido conectar con el servidor FTP" + " " + oURL:cServer
      IF oFTP:SocketCon == NIL
         cStr += Chr( 13 ) + Chr( 10 ) + "Conexión no inicializada"
      ELSEIF hb_InetErrorCode( oFTP:SocketCon ) == 0
         cStr += Chr( 13 ) + Chr( 10 ) + "Respuesta del servidor:" + " " + oFTP:cReply
      ELSE
         cStr += Chr( 13 ) + Chr( 10 ) + "Error en la conexión:" + " " + hb_InetErrorDesc( oFTP:SocketCon )
      ENDIF
      MsgInfo('Error: '+cStr)
      lRetorno := .F.
   ENDIF

RETURN(lRetorno)
Cordiales saludos amigo.