tipclient()

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

tipclient()

Mensagem por marcos.gurupi »

Estou desenvolvendo um sistema q irah funcionar em SysTray para fazer
atualizacao do sistema atraves de um servidor FTP estava quase no final do
projeto, acontece q agora estah travando na seguinte linha:

oFtp:= tipclient():NEW(oUrl,,.T.)

Sem qualquer explicacao, eu faco o acesso ao ftp pelo prompt mas quando
executo o sistema o mesmo trava sem qualquer mensagem, o servidor n recebe
nenhuma informacao sobre logon. Seria algum problema de ver xhb estou usando
a 0.99.70 com hwgui 2.16

Marcos Roberto.

Codigo completo abaixo (colaboracao do Leonardo):

Código: Selecionar todos

********************************************** 
Function Donwload_File(ftpdir,ftpfile,fdestino) 
********************************************** 
Private vBaixa:="N" 
Private ftpproto :="ftp://" 
Private ftpserver := vSERVER_FTP  
Private ftpuser   := vUSUARIO_FTP 
Private ftppass   := vPASSWORD_FTP
if Os_IsWinNT()
   ShowNotifyInfo(oMainWindow:handle ,.T., "AAA AAA " , NIL,"Conectando com o servidor "+FTPSERVER+". Usuario: "+Alltrim(ftpuser),"Conectando com o servidor")
endif
//MsgRun("Conectando com o servidor "+FTPSERVER+". Usuario: "+Alltrim(ftpuser)+" Senha: "+vPassword_FTP) 
curl:=ftpproto+ftpuser+":"+ftppass+"@"+ftpserver
oUrl:= turl():new(curl) 
oCred:= tIPCredentials() 
//oFtp:= tipclientftp():NEW(oUrl,,.T.) // xhb 1.0.0
oFtp:= tipclient():NEW(oUrl,,.T.) //xhb 0.99.70  TRAVA BEM AQUI
oFTP:nConnTimeout := 20000 
oFTP:bUsePasv     := .T. 
IF oFTP:Open()
   //Hw_Atualiza_Dialogo("Conexao estabelecida. Verificando Atualizacoes disponiveis.")
	oFTP:Cwd(ftpdir)     // muda o diretorio 
   IF !empty(clista:=oFTP:List())
		vBaixa="S" 
      cTamanho:=FileSize(ftpFile)
	   //Fim_Run()
	   Inicia_Progress(fDestino,cTamanho,ftpfile)
	   //MsgRun("Foi feito download do "+ftpFile+". O NST ira fechar o sistema para atualizar em 1 minuto",5000)
	   IF Alltrim(ftpfile)=Alltrim(vRetaguarda)
	      vUPDATERetaguarda:=.T.                            
	      oFTP:Dele(vRetaguarda)
	   Else
	      vUPDATERetaguarda:=.F.
		Endif
	   IF Alltrim(ftpfile)=Alltrim(vPDV)
	      vUPDATEPdv:=.T.
	      oFTP:Dele(vPDV)
      Else
         vUPDATEPdv:=.F.
		Endif
	ENDIF 
   oFTP:CLOSE()
Else 
   //Fim_Run()
	cStr := "Não foi possível Conectar com o Servidor FTP: "
   IF oFTP:SocketCon == NIL 
      cStr += "Conexão Não Inicializada" 
   ELSEIF InetErrorCode( oFTP:SocketCon ) == 0 
      cStr += "Resposta do Servidor:" + " " + oFTP:cReply 
   ELSE 
      cStr += "Erro na Conexão:" + " " + InetErrorDesc( oFTP:SocketCon ) 
   ENDIF 
   MsgInfo(cStr,"Erro no FTP") 
ENDIF 
Return 

Marcos Roberto
NetService Software
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: tipclient()

Mensagem por sygecom »

Olá Marcos,
Quem sabe você atualiza seu xharbour para 1.0.0, ou tens alguma restrição que deves usar 9970 ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: tipclient()

Mensagem por marcos.gurupi »

Caro Leonardo, o misterio eh q essa ferramenta jah estava funcionando perfeitamente, acontece q agora quando vou fazer o uso dela trava na linha onde fica o tipclient(), vou tentar em outro micro com o xhb 1.0.0.

Obrigado!

Marcos Robert.
Marcos Roberto
NetService Software
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: tipclient()

Mensagem por sygecom »

pois é, que estranho, pq a principo seu codigo esta certinho, pelomenos eu usava assim na 9970.Talvez mudando a ordem das LIB no make, resolva.

Boa Sorte.
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Re: tipclient()

Mensagem por marcos.gurupi »

Bom soh para o registro da solucao do problema de travamento o mesmo ocorria pq era criado um arquivo temporario ftpnn (onde nn seria uma seguencia numerica) entaum quando o arquivo chega ateh 99 eh ocorre o problema, apagando o arquivo solucionei o problema, acontece que agora a rotina (feita pelo Leonardo) faz o logon no ftp mas n faz o download, agora tenho q saber o pq disso.

Marcos Roberto.
Marcos Roberto
NetService Software
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: tipclient()

Mensagem por sygecom »

Marcos, fiz o teste com a 9970 e esta funcionando normal, como eu havia dito antes, é outra coisa que esta dando zica ai !
Ou tente usando a 1.0.0.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Re: tipclient()

Mensagem por leandrolinauer »

Bom dia a todos.

Montei um sistema de monitoramento de base de dados (DBF) em conjunto com FTP para que o sistema fique semi-online, até todos os testes funcionou perfeitamente, me deparei com problema no FTP da ordem de invasão, explico, o meu travava e não conseguia mais acesso a conta FTP, nem aos sites hospedados no provedor, entrando em contato com o provedor o mesmo me explicou que o meu ip foi registrado como tentativa de invasão, porque eu fiz o teste na mesma conexao conectando em tres terminais diferentes para teste, fiz em outra conexão e deu o mesmo problema, estou tentando resolver este problema de invasão.

Minha rotina esta assim:

while

1 Conecto (se nao conectado reconecta)
2 efetuo download (se existir)
3 processo arquivos
4 efetuo upload

end
Desconecto (somente qdo finalizo o monitorador, ou seja, pode ficar o dia todo conectado)

o problema é que preciso fazer isto de segundo em segundo o tempo do loop, mas aí da o problema de invasão.

Assim que der certo alguma coisa eu posto o fonte aqui, se alguem souber o que pode ser ou como evitar o problema, me avisem.

grato
Leandro :)Pos
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: tipclient()

Mensagem por sygecom »

Buenas,
Nunca usei FTP assim continuo, mas acredito que para o seu caso, ou vc deve ter um FTP dedicado, ou seja um servidor proprio para essas transferencia seguidas, ou pensar em trabalhar com Banco de dados SQL.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

Re: tipclient()

Mensagem por leandrolinauer »

Bom dia. Sygecom :)Pos

Quanto ao problema de invasão foi resolvido com a conexão apenas de um ip por conexão, esta funcionando bem até certo ponto.

Me deparei com o seguinte problema:

while
1-Conecto
2-verifico (se desconectar, reconecta)
3-processo
4-desconecto
end

Neste loop ocorria que em várias hipóteses travava no comando oFTP:List(), independente de que hora de conexão e tempo de duração as vezes trava em 10 conexões ou em 400 conexões em poucos minutos até um ou duas horas em loop, se aguardar ele fica travado por volta de 12 minutos cravados, notei que após cada travamento ele executava após a liberação uma nova conexão com o servidor.

Mudei para:

1-Conecta
While
2-verifico (se desconectar, reconecta)
3-processo
End
4-Desconecto

Me deparei com o mesmo problema, ele continua travando no comando oFTP:List() da mesma forma e ficando 12 minutos travados.

Eu gostaria de saber se em algum comando da classe FTP se existe um timeout para o list() igual tem o do OPEN() que é oFTP:nConnection:=20000 algo assim, em millisegundos.

Fiz mudanças nestes valores,, mas afetam apenas a conexao, não se o FTP cair.

Quanto ao uso de SQL, vou passar dentro em breve o sistema todo para SQL mas de qualquer forma o sistema de FTP continuará funcionando devido eu ter que usar o modo SEMI-ONLINE porque a internet aqui fica muito a desejar.

Grato pela colaboração.
Um abraço.
:P
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Responder