eu tentei usar o TFTPServ junto com a TFTP e no começo do primeiro arquivo gera um erro no TFTPServ, veja meu codigo
Code: Select all
* =============================================================================
Function Ftp() // Atualizar versao por FTP - 29-08-2007
// a maquina que atualizar versao grava o IP na Config 1084
* =============================================================================
local oView, oFtp
local cIP := rtrim( LerConfig(1084) )
if empty(cIP)
MsgAlert("O IP do servidor não foi encontrado na config 1084","IP do servidor FTP")
return nil
Endif
oView := TView():New( SisMain(), "Atualização de versão via FTP" )
oView:oButBar := Array(2)
oView:cAlias := "ARRAY"
oView:lCadastro := .t.
oView:bClose := {|| if(ValType(oFTP)=="O",oFtp:End(),), LoadRec() }
oView:Open()
DEFINE BUTTON oView:oButBar[2] OF oView:oBar RESOURCE "start" ;
NOBORDER GROUP ACTION ( oView:oButBar[2]:Disable(), oFtp := BuildServer() ) ;
TOOLTIP "Iniciar o servidor" ;
PROMPT "Servidor" TOP
oView:Show()
return nil
* =============================================================================
Function BuildServer() // rotina que aciona o FTP
* =============================================================================
local oFTPServer
oFTPServer := TFtpServer():New()
oFtpServer:cDefPath := DirWin()
oFtpServer:cLogFile := "ftpserv.log"
oFtpServer:lDebug := .t.
oFTPServer:Activate()
Msg("ok, servidor operando")
Return oFTPServer
* =============================================================================
Function FTPClient() // cliente de FTP para copiar
* =============================================================================
local cIP := "192.168.0.50"
local oInternet, oFTP, aFiles, n
if empty(cIP)
MsgAlert("O IP do servidor não foi encontrado",;
"IP do servidor FTP")
return nil
Endif
oInternet := TInternet():New()
oFTP := TFTP():New( cIP , oInternet, "","" )
if !empty( oFTP:hFTP )
aFiles := oFTP:Directory( "www/*.*" )
FOR n := 1 TO Len( aFiles )
MsgMeter( {|oMeter| CopyFTP( oFTP, aFiles[n,1],;
aFiles[n,2], DirTmp(), oMeter ) },;
"aguarde, copiando:" + aFiles[n,1],"Sisrev-Win, copiando arquivo via FTP" )
Next
Endif
oInternet:End()
return nil
* =============================================================================
Function CopyFTP( oFTP, cFile, nTotal, cDestino, oMeter )
* =============================================================================
local hHan, n := 0, cBuffer
local oFile := TFTPFile():New( cFile, oFTP )
oFile:OpenRead()
oMeter:nTotal := nTotal
hHan := FCreate( cDestino + cFile )
While n <= nTotal
cBuffer := oFile:Read(128)
n += 128
oMeter:Set( n )
SysRefresh()
if Fwrite( hHan, cBuffer, Len(cBuffer) ) < Len(cBuffer)
Msg("fim de arquivo")
endif
End
FClose( hHan )
oFile:End()
Return nil