Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/11/2011, 04:17
gonda69
 
Fecha de Ingreso: enero-2009
Mensajes: 29
Antigüedad: 15 años, 3 meses
Puntos: 0
cargar una imagen jpg

Hola a todos!
Os cuento mi problema a ver si alguien me puede echar una mano.
Tengo que hacer un servidor http simple que pueda enviar tanto archivos como imágenes. El tema es que implementé una función para gestionar la apertura de los ficheros que me da un error de segmentación cuando intento abrir un archivo imagen .jpg
La cuestión es, ¿hay que usar una función diferente para los archivos imagen y para los de texto plano?
Os dejo el código por si sirve de algo.
El fallo lo da entre las línea 27 y 29.
Gracias por adelantado.
Código c++:
Ver original
  1. char *tratamiento_fichero (char *buffer, int total_recibidos)
  2. {
  3.   int i;
  4.   char *copia,*copia2;
  5.   ifstream f_entrada;
  6.   cout << "->\tMensaje HTTP de petición:\n"<<buffer << endl;
  7.   copia  = buffer + 5;
  8.   copia = strtok(copia, " ");
  9.  
  10.   f_entrada.open (copia,ios::binary);
  11.   copia2 = strstr(copia, "HTTP");     //busca la subcadena HTTP dentro de la cadena copia
  12.  
  13.   if (copia2 != NULL) *copia2 = '\0';
  14.   if (DEBUG) cout << "->\tArchivo: " << copia << endl;
  15.   //Recuperación del archivo.
  16.  
  17.   if (f_entrada.fail())
  18.     {
  19.       f_entrada.clear();
  20.       return metodos(404);
  21.     }
  22.   f_entrada.seekg(0,ios::end);
  23.   int tamanho =f_entrada.tellg();
  24.   f_entrada.seekg(0,ios::beg);
  25.   char *caracter = new char (tamanho);
  26.  
  27.   while (!f_entrada.eof())
  28.     f_entrada.read(caracter, tamanho);
  29.   f_entrada.close();
  30.    
  31.   caracter [tamanho]= '\0';
  32.   return caracter;//buffer_retenido;
  33. }