Ver Mensaje Individual
  #1  
Antiguo 04-06-2007
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Reputación: 21
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