Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Envio de Stream con Indy (https://www.clubdelphi.com/foros/showthread.php?t=3687)

diegofhernando 16-09-2003 22:22:50

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:confused: 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:cool:

jachguate 17-09-2003 07:53:27

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.

;)

diegofhernando 17-09-2003 15:50:04

Gracias por tus sugerencias... voy a trabajar en eso.

Salu2:cool:

guillotmarc 17-09-2003 15:59:18

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.

diegofhernando 17-09-2003 21:06:36

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?:confused:

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 :eek:

Gracias por su colaboración.

Salu2:cool:

Alzheimer 17-11-2009 03:55:16

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


La franja horaria es GMT +2. Ahora son las 09:31:43.

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