FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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. |
#2
|
||||
|
||||
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 |
#3
|
||||
|
||||
Gracias por tus sugerencias... voy a trabajar en eso.
Salu2
__________________
Diego. Colombia es pasión. |
#4
|
||||
|
||||
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). |
#5
|
||||
|
||||
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. |
#6
|
|||
|
|||
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; 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 |
|
|
|