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!