FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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; 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! |
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
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! |
#4
|
||||
|
||||
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. |
#5
|
|||
|
|||
gracias!
muchas gracias otra vez.
El problema del tamaño es del cliente? o del servidor? Muchas gracias |
#6
|
||||
|
||||
Basandome en las Indy, el problema es de el cliente.
|
|
|
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 |
|