Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-09-2003
Avatar de diegofhernando
diegofhernando diegofhernando is offline
Miembro
 
Registrado: May 2003
Ubicación: Locombia papá!
Posts: 267
Poder: 16
diegofhernando Va por buen camino
Envio de Stream con Indy

Que tal foro...

Estoy terminando mi aplicación y todo me funciona perfecto excepto el envio de archivos... si, estoy enviando archivos usando sockets, el problema se presenta cuando envio archivos de mas de 2 MB en ese momento el servidor se CONGELA hasta que concluye la operación... ya intente con el AntiFreeze.. pero sigue igual. Por favor si alguien tiene la solución a este inconveniente le agradeceria que me la comunicara.


Salu2
__________________
Diego. Colombia es pasión.
Responder Con Cita
  #2  
Antiguo 17-09-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: May 2003
Ubicación: Guatemala
Posts: 6.243
Poder: 22
jachguate Va por buen camino
Cool

Me parece extraño que se congele el servidor... porque por definición es multihilos y todo el archivo se recibe en un hilo diferente al principal.

Es distinto en el cliente, donde por defecto el envio se ejecuta en el hilo principal. Lo recomendable es programar el envio de archivo en un hilo distinto (thread) y con ello el cliente no se congelará. Otra solución, si vos mismo lees el archivo y lo vas enviando por trozos, es que incluyas llamadas a Application.ProcessMessages en cada iteración, con el cuidado respectivo de deshabilitar botones, etc. para evitar que la llamada a ProcessMessages te haga estragos.

En fin... la idea es esa.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 17-09-2003
Avatar de diegofhernando
diegofhernando diegofhernando is offline
Miembro
 
Registrado: May 2003
Ubicación: Locombia papá!
Posts: 267
Poder: 16
diegofhernando Va por buen camino
Gracias por tus sugerencias... voy a trabajar en eso.

Salu2
__________________
Diego. Colombia es pasión.
Responder Con Cita
  #4  
Antiguo 17-09-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: May 2003
Ubicación: Huelva
Posts: 2.638
Poder: 18
guillotmarc Va por buen camino
Hola.

Por cierto, ¿ has probado a actualizar los componentes Indy ?, tuve problemas con el cliente de FTP (quedaba la aplicación colgada en algunos casos), y el soporte de Indy me comentó que los componentes Indy v8 de Delphi 6 estaban muy obsoletos, el problema se solucionó actualizando los componentes a la versión 9.

www.nevrona.com/indy/

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 17-09-2003
Avatar de diegofhernando
diegofhernando diegofhernando is offline
Miembro
 
Registrado: May 2003
Ubicación: Locombia papá!
Posts: 267
Poder: 16
diegofhernando Va por buen camino
Que tal... Pues desafortunadamente estoy trabajando con la version 9 de los Indy... y definitivamente no funciona. Lo que pretendo ahora es utilizar los FTP; pero para mi desgracia no se como utilizarlos, con los indy hay un ejemplo pero muestra como conectarse a un servidor FTP, mi pregunta es ¿COMO IMPLEMENTO UN SERVIDOR FTP?

Les agadeceria enormemente si me pudieran orientar en este aspecto, solo lo básico o si me pudieran recomendar algun sitio donde encontrar esta información... pues he estado buscando y parece ser que nadie lo ha hecho

Gracias por su colaboración.

Salu2
__________________
Diego. Colombia es pasión.
Responder Con Cita
  #6  
Antiguo 17-11-2009
Alzheimer Alzheimer is offline
Miembro
 
Registrado: Mar 2009
Posts: 16
Poder: 0
Alzheimer Va por buen camino
hola ....
aki te posteo una posible solucion utilizando los IdTCP de las Indy

del lado servidor:
pon un TIdTCPServer en una form y hazle un command handler k se llame upload por ejemplo y ponle al recibir el komando el siguiente kodigo:

Código:
procedure TForm1.IdTCPServer1UploadCommand(ASender: TIdCommand);
var
  archivo : TFileStream;
  fout: string;
begin
try
 fout:= 'd:\'+ASender.Params[0];
 archivo := TFileStream.Create(fout,fmCreate or fmOpenWrite);
 ASender.Thread.Connection.ReadStream(archivo);
finally
 archivo.Free;
end;
end;
del lado cliente:
inserta un TIdTCPClient.
kuando kieras enviar el archivo ejemplo usando un button:

Código:
procedure TForm1.Button1Click(Sender: TObject);
 var
  archivo: TFileStream;
  AFile: string;
begin
AFile:= 'D:\Administrador\$h@\FantasticTool.exe';
 if  FileExists(AFile) then begin
   archivo:= TFileStream.Create(AFile,fmOpenRead);
    try
      IdTCPClient1.Connect();
      if IdTCPClient1.Connected then begin
       IdTCPClient1.WriteLn('Upload '+ExtractFileName(AFile));
       IdTCPClient1.WriteStream(archivo,true,true);
      end;
    finally
     archivo.Free;
     IdTCPClient1.Disconnect;
    end;
  end else begin

  end;
end;

espero te sirva de ayuda... es menos k implementar un FTP kompleto. aunke si estas interesado en algo komo esto te rekomiendo utilizar el de las ICS. (en mi opinion esta mucho mas trabajado y kompleto ***ademas de muy sencillo*** k el de las INDY)

salu2
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:35:39.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi