Foros del Web » Programación para mayores de 30 ;) » C/C++ »

¿¿¿¿Memoria dinámica - recibir datos por un socket????

Estas en el tema de ¿¿¿¿Memoria dinámica - recibir datos por un socket???? en el foro de C/C++ en Foros del Web. He leído muchos mensajes en éste mismo foro, sobre problemas con memoria dinámica, etc. Cuando recibo datos de un servidor, utilizo la función recv() (winsock2.h) ...
  #1 (permalink)  
Antiguo 27/12/2008, 12:54
 
Fecha de Ingreso: diciembre-2008
Ubicación: San Sebastián
Mensajes: 15
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta ¿¿¿¿Memoria dinámica - recibir datos por un socket????

He leído muchos mensajes en éste mismo foro, sobre problemas con memoria dinámica, etc.
Cuando recibo datos de un servidor, utilizo la función recv() (winsock2.h) para recibir esos datos, y en uno de los parámetros de la función, tengo que dar un puntero en el que almacenar los datos que llegan. Pero no se me ocurre cómo puedo hacerlo, porque yo no sé de antemano cuál va a ser el tamaño de los datos que me enviará el servidor. Cuando descargo, un archivo de un FTP, por ejemplo, no sé el tamaño del archivo.
Y si asigno, por ejemplo, 2000 bytes de memoria, así:
puntero=(char *)malloc(2000);
Y luego me conecto a un FTP, y le digo que me envie un archivo, y voy guardando las partes del archivo en esa memoria, pero luego resulta que el archivo pesa 3000 bytes. ¿Qué pasaría, se provocaría un desbordamiento de buffer, no? Precisamente estoy trabajando en eso, en un programa que baje cierto archivo de un servidor FTP ó HTTP, entre otras cosas.
¿Cómo lo hago para bajar el archivo sin problemas, y usando suficiente memoria como para no provocar un overflow, pero no demasiada, para no desperdiciar memoria?
Estaría bien un código de ejemplo, pero da igual.
Gracias de antemano.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:23.