Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
TTcpClient y TTcpServer

Mi pregunta creo q dentro de todo es sencilla... quisiera saber si puedo hacer un chat en red con estos componentes... vi un ejemplo en la web de Seoane para enviar un fichero, la pregunta es como seria en red? Es exactamente lo mismo pero con una IP de la red verdad?

Y si hay alguien q me pueda explicar como es q se envia un fichero... porq por ejemplo a esta porcion del codigo (del programa de seoane) no logro entenderla... Estuve leyendo un poco sobre la clase TFileStream, pero aun asi no termino de entender la idea de Buffer... alguien q me pueda explicar?


Código Delphi [-]
procedure TEnvio.Execute;
var
  Buffer: PByte;
  Leidos: Integer;
begin
  inherited;
  with TFileStream.Create(FLocalFile,fmOpenRead or fmShareDenyWrite) do
  try
    GetMem(Buffer,BufferSize);
    try
      FCliente.Active:= TRUE;
      try
        FCliente.Sendln(FRemoteFile);
        Leidos:= Read(Buffer^,BufferSize);
        while (Leidos > 0) and not Terminated do
        begin
          FCliente.SendBuf(Buffer^,Leidos);
          Leidos:= Read(Buffer^,BufferSize);
        end;
      finally
        FCliente.Active:= FALSE;
      end;
    finally
      FreeMem(Buffer);
    end;
  finally
    Free;
  end;
end;

Muchas Gracias!

{Saludos}
Responder Con Cita
  #2  
Antiguo 26-08-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 18
MaMu Va por buen camino
Cita:
Empezado por b3nshi Ver Mensaje
pero aun asi no termino de entender la idea de Buffer... alguien q me pueda explicar?

Muchas Gracias!

{Saludos}
Yo lo interpreto como un puntero al tamaño del archivo, mientras este es leido, es enviado, hasta que se termine de leer.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #3  
Antiguo 26-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
Bien... digamos q lo q hago en el codigo es ir leyendo parte por parte el archivo, buffer contiene el tamaño del archivo, entonces en el leidos voy cargando por partes mi archivo? Asi seria?

Por ejemplo yo puedo hacer algo asi?

Código Delphi [-]
var
archivo: FILE of byte;
contenido, enviando : ansistring;
tam, i, tamenvio : integer;
begin
{Archivo Basico}
try
   AssignFile(archivo, "miarchivo.ext");
   Reset(archivo); // intentar abrirlo
Except On Exception do
   begin
   try
      {Error: el archivo no existe o esta en uso}
      exit;
   end; 
   end;
end;
 
{Creo el componente para el envio y bueno... se lo configura}
cliente:= TTCPClient.Create(nil);
...
 
{Ahora voy leyendo por parte}
tam := strlen(archivo);
seek(archivo,0);
read(archivo, contenido); //Aqui cargo todo el archivo
closefile(archivo); //Ya no lo necesito
 
for i := 0 to tam do //Recorro la variable contenido hasta el final
begin
if (i + tamenvio) < tam then
 begin
  enviando := copy(contenido, i, tamenvio);
 end
 else
 begin
  enviando := copy(contenido, i, tam - i);
 end;
cliente.sendln(enviando);//Envio por parte el archivo
i := i + tamenvio; //Incremento la variable
end;
end;

Bueno supongo q algo mal tiene q haber en el codigo pero lo escribi de memoria... ahora mi pregunta es... puedo hacerlo de esta forma?

No se si se entendio pero la idea de esta forma es ir leyendo el archivo en partes como si fuera cadena de texto y la pc q lo reciba va a tener q ir armandolo al archivo en partes tambien...

Si es asi cuales son las ventajas y desventajas de hacerlo de esta forma?

Muchas Gracias por tu respuesta
{Saludos}
Responder Con Cita
  #4  
Antiguo 27-08-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 18
MaMu Va por buen camino
La verdad es que podria haber muchas, pero siempre depende de que trate la aplicacion. Un verdadera ventaja, desde mi punto de vista, es muy comodo para usar un progressbar e informar del envio. El hecho de enviarlo por partes me parece lo mejor, sobre todo para volumenes de datos muy grandes (no exesivos).
Y por sobre todas las cosas, porque es codigo de Seoane, y la verdad que todo lo que el ha publicado, es claro, completo, y siempre funciona .

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #5  
Antiguo 27-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
Buen punto no? Eso de seoane es verdad... sus codigos son muy buenos y efectivos...

Y ahora otra pregunta... digamos q continuando con este tema... si yo por ejemplo quiero crear una aplicacion en red, con una base de datos en el servidor no mas, pero esa base de datos va a ser un XML, como puedo hacer para compartirlo? Tendria q enviarlo al cliente cada vez q este lo quiera utilizar?

Muchisimas Gracias!

{Saludos}
Responder Con Cita
  #6  
Antiguo 28-08-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 18
MaMu Va por buen camino
Todo depende de que es lo que sea tu aplicación, que motor de base de datos vas a usar? de que trata la aplicacion?

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #7  
Antiguo 29-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Poder: 20
b3nshi Va por buen camino
Perdon por la demora en contestar... estuve estudiando mucho rindo una materia libre dentro de 2 dias y bueno... toy medio preocupado...

En cuanto a mi aplicacion, es para sacar turnos, para un taller, digamos q no voy a utilizar un motor de base de datos, solo voy a utilizar un XML, q voy a manejarlo con TXmlDocument, se entiende?

Por eso si yo quiero hacer una consula desde otra pc, o por ejemplo quiero ver todos los turnos disponibles y los turnos ya dados, como podria hacerlo?

Tendria q enviarme el archivo cada vez q quiera ver todo y cuando quiera consultar por un solo horario seria una consulta enviando por ejemplo: "componente.sendln(consulta)" y q el servidor me devuelva una cadena de texto con la info?

Muchas Gracias!

{Saludos}
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Errores con los tTcpClient dnieto Varios 4 11-07-2007 14:09:47


La franja horaria es GMT +2. Ahora son las 18:11:03.


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
Copyright 1996-2007 Club Delphi