begin process at 2012 05 28 14:44:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Broken pipe et sockets


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Broken pipe et sockets

mardi 16 novembre 2004 à 23:00:39 | Broken pipe et sockets

nono1307

J'ai un petit problème :(

Je dois faire un serveur HTTP en C avec les sockets. Ce serveur doit gérer l'envoie des images. Or, c'est à ce niveau qu'est le problème.

Voici le bout de code :

# if (((path[j-1]=='g')&&(path[j-2]=='e')&&(path[j-3]=='p')&&(path[j-4]=='j'))||((path[j-1]=='g')&&(path[j-2]=='p')&&(path[j-3]=='j'))||((path[j-1]=='f')&&(path[j-2]=='i')&&(path[j-3]=='g'))) {
#
# /* l'extension du fichier est jpeg*/
# /* le fichier est donc une image => Envoi entete HTTP pour une image */
# write(newsd,bufimage,sizeof(bufimage));
# //write(1,bufimage,sizeof(bufimage));
#
#
# /* allocation d'une zone de mémoire de 1 Mo pour stocker l'image à envoyer */
# char* image=(char*)malloc(1048576*sizeof(char*));
# n=0;
#
# while(!feof(fichier)) {
# image[n]=fgetc(fichier);
# n++;
# }
# /* on a chargé dans "image" l'image à envoyer */
# /* de plus, sa taille est n-1 octets */
#
#
# /**********************************************************************************************/
# if ((fichier2=fopen("./caisse.jpeg", "w+a" ))!= NULL) {
# printf( "fichier2 cree .....\n" );
# }
#
# for(k=0;k<n;k++) {
# fprintf(fichier2,"%c",image[k]);
# }
# fclose(fichier2);
# /* cela prouve bien qu'on a tout chargé dans "image", on crée un fichier qui contient bien l'image à envoyer */
# /* ici ca marche, je récupère bien l'image*/
# /***********************************************************************************************/
#
# /* problème au niveau du write !!!!!!!!! */
# write(newsd, image,n-1); // pb ici
# //write(1,image,500); // par contre ici j'ai les 500 premiers caractères de image qui s'affichent bien
# fclose(fichier);
# free(image);
# }

Voici l'en-tête HTTP que j'envoie pour l'image :
# char bufimage[]="HTTP/1.1 200 OK\nContent-Type: image/jpeg\n\
# \n";

Pour info, path contient le nom du fichier à envoyer ( ce qu'il y a apres le GET ...)

J'arrive bien à ouvrir l'image, la lire et la stocker dans "image".
Le problème vient au moment du "write(newsd, image,n-1);" : ca me met un broken pipe. Par contre quand je fais "write(1,image,500);", il y a les 500 premiers caractères contenus dans "image" qui s'affichent !!
Qu'est ce qui ne vas pas avec write ? Peut etre que l'image est trop grosse ? ( elle fait en gros 65 ko) Mon en-tête HTTP n'est pas correct ?

Je vous remercie d'avance
mercredi 17 novembre 2004 à 13:00:37 | Re : Broken pipe et sockets

coucou747

Administrateur CodeS-SourceS
non en fait ton image doit être en hexa...
jeudi 18 novembre 2004 à 09:20:31 | Re : Broken pipe et sockets

nono1307

alors faut il convertir l'image en binaire ?



Mais vu que j'envoie l'entete http pour gérer les images, le client sait qu'il va recevoir une image et donc va s'adapter...
jeudi 18 novembre 2004 à 18:29:23 | Re : Broken pipe et sockets

coucou747

Administrateur CodeS-SourceS
pas binaire hexadécimale... pas base 2 base 16...


Cette discussion est classée dans : fichier, image, http, path, write


Répondre à ce message

Sujets en rapport avec ce message

comment inserer des données dans un exe [ par vdox05 ] Bonjour,J' aimerais inserer les données d' un fichier image à l' interieur d' un executable.En fait il faudrait qu' il y ait deux fichiers à l' interi Sauvegarde du rendu ds un fichier image [ par titeufxp ] Bonjour,J'aurai besoin d'aide pour sauvegarder le contenu de ma fenetre opengl ds un format image genre BMP ou JPG.J'arrive a faire un fichier image a inserer une image dans un fichier word... [ par nebucad ] bonjour en premier lieu merci a vieuxLion et Gaëlle pour leur aide concernant mon probleme d'impression les deux ont marché...J'aimerai savoir s' il é API Win32, problème de variable [ par bouba ] Salut a tous, j'ai un blem de variable dans mon programme. Voici mon code source.LPSTR Path="";LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM Récupération du chemin d'un fichier dans le 'path' [ par BettaSplendens ] Bonjour,j'ai 2 choses... d'un côté le chemin avec laquelle est lancée mon application, qui comporte "bien entendu" plusieurs répertoires.. désignons i Comment retrouver le path en ayant que le nom du fichier [ par Xentor609 ] salut!Je cherche à retrouver le path en ayant que le nom du ficher qui est mémoire, cad en execution !Avec les process, je n'obtiens que le nom du fic le http post OK. Mais pour un UPLOAD de fichier ? [ par pdessoulles ] Salut à tous,Le problème suivant me pourrit la vie depuis quelques jours :J'arrive bien à envoyer des données sur une socket ouverte sur un serveur ht Matez ça! :) [ par MaDC ] J'ai un soucis avec mon appli MFC.Je voudrais ouvrir un document avec ça :void CCommandeRobotView::OnFileOpen() { CFileDialog fenetreDlg( true, NU Analyse fichier log a faire en C [ par Nexouille ] A l'aideeeeeeeeeeeeeeeeeeeeeeeeee***************************************Les serveurs web enregistrent la trace des visites dans des fichiers de log. C Envoi d'un fichier XML par le protocole HTTP [ par Tof ] Bonjour tout le monde,J'aurais voulu savoir comment envoyer un fichier XML par l'intermédiaire du protocole HTTP en utilisant la méthode POST.Merci d'


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales