Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-06-2007
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
Lightbulb Transferencia de archivos con Sockets no me deja mas de 32KB!

Hola amigos,
Estoy usando ClientSocket, y ServerSocket para la transferecia de archivos,
y me funciona muyyyyy bien!
pero, cuando intento enviar un archivo mayor de 32K, me sale el archivo malo al otro lado, es decir, solo llegan 32K, por el numero, se me hace que neesito vaciar un buffer, limpiar algo, o algo asi,,,,,
el codigo de envio es este:
Código:
 
TMemoryStream *archivo = new TMemoryStream;
        archivo->Clear();
        if (OpenDialog1->Execute()){
                archivo->LoadFromFile(OpenDialog1->FileName);           // Archivo a Enviar //
        }
        Byte *byt = new Byte() ;
        for (int i=0;i<(archivo->Size);i++){
                archivo->Position=i;
                archivo->Read(byt,1);
                ClientSocket1->Socket->SendBuf(byt,1);
        }
 
        delete archivo;
Eso en el cliente, y en el servidor en el evento donde el cliente lee,
esto:
Código:
 cont++;

       // RichEdit1->Lines->Add(Socket->ReceiveText());

        Socket->ReceiveBuf(bytrec,1);                       // Tiene que recibir primero el tamaño y el nombre, //                               // Recibido es otro MemoryStream! funciona perfecto para archivos menores a 32K, pero si se pasa, no funciona.....
        Recibido->Write(bytrec,1);                         // tiene problemas cuando es un tamaño mayor a 32K,


Alguna idea? tiene algo que ver con el buffer del Socket? como lo limpio?
Gracias!
Responder Con Cita
  #2  
Antiguo 04-06-2007
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Hola, yo normalmente uso el idclientsocket de las indy y este tiene la propiedad de determinar el tamaño derl buffer (sendbuffersize) tanto de lectura como de escritura, predeterminado viene a 32768.

Le he echado un vistazo al componente clientsocket para ver si tenia una propiedad parecida y no la he visto por ningun lado, pero supongo que el problema es que restringe el tamaño del mensaje.

Yo por experiencia te recomiendo los sockets de las indy ya que son mas completos, tendrias que cambiar muy poco codigo y estas tienen la propiedad de determinar el buffer de escritura.

Un saludo.
Responder Con Cita
  #3  
Antiguo 04-06-2007
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
Muchas gracias por tu respuesta

Hola!
Gracias por tu respuesta!
lo intentare con las indy.
pero insisto.....hay alguna form ade limpiar el buffer???
Gracias!
Responder Con Cita
  #4  
Antiguo 04-06-2007
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Lo que necesitas es aumentar el tamaño del buffer no limpiarlo ya que lo quieres es enviar archivos de mas de 32K y lo que creo que te pasa es que el tamaño del buffer esta restringindo a 32K como en las indy con lo cual de que te sirve limpiarlo.

No tengo mucha experiencia con el clientsocket ya que alguna vez que lo usado me ha dado problemas y me he pasado a las Indy, espero que alguno de los experimentados amigos de este foro te pueda ayudar mas que yo.

Un saludo.
Responder Con Cita
  #5  
Antiguo 04-06-2007
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Poder: 19
JuanErasmo Va por buen camino
gracias!

muchas gracias otra vez.

El problema del tamaño es del cliente? o del servidor?

Muchas gracias
Responder Con Cita
  #6  
Antiguo 05-06-2007
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Basandome en las Indy, el problema es de el cliente.
Responder Con Cita
  #7  
Antiguo 10-09-2007
serebi serebi is offline
Miembro
 
Registrado: ago 2005
Posts: 17
Poder: 0
serebi Va por buen camino
Que puedo decirte alguna ves hize un programa de transferencia de archivos con soquets no con los indy recuerdo que use streams para mandar archivos de hasta 38 Mb buscare el codigo y lo publicare pero te aseguro que se puede realizar
Responder Con Cita
Respuesta



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
Transferencia de archivos con sockets JMGR Internet 2 16-04-2007 01:35:15
velocidad de transferencia muy lenta lookmydoom Redes 1 26-08-2006 18:34:49
Velocidad de transferencia... eisenco Internet 0 21-03-2005 08:58:05
Transferencia FTP no se finaliza DarkByte Internet 0 05-03-2005 10:39:35
Transferencia de archivos Silver Varios 2 13-06-2003 23:12:38


La franja horaria es GMT +2. Ahora son las 11:14:38.


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