Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1740 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Probleme de socket ? ou de mise en place dans un fichier ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme de socket ? ou de mise en place dans un fichier ?

n°1426226
johnson951
Posté le 16-08-2006 à 17:59:43  profilanswer
 

Bonjour,
 
Voici mon code source qui doit me permettre de récuperer des données d'un hote mais mon probleme est que quand j'envoi des images par exemple elle ne sont pas comme l'originale j'obtient des décalages...
 
Voici mon code :
 

Code :
  1. // Declaration de variables
  2.     WSADATA initialisation_win32;            // Variable permettant de récupérer la structure d'information sur l'initialisation
  3.     int erreur;                                // Variable permettant de récupérer la valeur de retour des fonctions utilisées
  4.     int taille;
  5.     char buffer[1024];                        // Tampon contenant les données reçues ou envoyées
  6.     SOCKET id_de_la_socket;                    // Identifiant de la socket
  7.     SOCKET transf_sock;
  8.     SOCKADDR_IN information_sur_la_source;    // Déclaration de la structure des informations lié à l'écoute
  9.     FILE *file2;
  10.     int nbr_recv,i,j;
  11.     int z=0;
  12.     int decalage=0;
  13.  
  14. void main(int argc, char* argv[])
  15. {
  16.         // Initialisation de Winsock
  17.     erreur=WSAStartup(MAKEWORD(2,2),&initialisation_win32);
  18.     
  19.     // Ouverture d'une Socket
  20.     id_de_la_socket=socket(AF_INET,SOCK_STREAM,0);
  21.     
  22.     //  Lire la socket à une ip et un port d'écoute
  23.     information_sur_la_source.sin_family=AF_INET;    
  24.     information_sur_la_source.sin_addr.s_addr=INADDR_ANY; // Ecoute sur toutes les IP locales
  25.     information_sur_la_source.sin_port=htons(8686); // Ecoute sur le port 8686
  26.  
  27.     erreur=bind(id_de_la_socket,(struct sockaddr*)&information_sur_la_source,sizeof(information_sur_la_source));
  28.     erreur = listen(id_de_la_socket,1);
  29.     printf("\nlisten" );
  30.     transf_sock = accept(id_de_la_socket,(struct sockaddr*)&information_sur_la_source.sin_addr,NULL);
  31.     printf("\naccept" );
  32.     
  33.     nbr_recv = recv(transf_sock,(char *) buffer,6,NULL);
  34.     taille = StrToInt(buffer);
  35.     
  36.  
  37.     printf("%d",taille);
  38.  
  39.     while(z<taille)
  40.     {
  41.         nbr_recv = recv(transf_sock,(char *)buffer,1024,NULL);
  42.         printf("\n nbr_recv = %d", nbr_recv);
  43.         
  44.         file2 = fopen("test","w+" );
  45.         fseek(file2,decalage,0);
  46.         for(i=0; i<nbr_recv-1; i++)
  47.             fputc((char)buffer[i], file2);
  48.         
  49.         decalage = decalage + 1023;
  50.         z = z + 1024;
  51.     }
  52.     system("pause" );
  53. }


 
Voyez vous une erreur ?
 
Par contre, la récéption de la taille se fait sans aucun probleme!
 
Merci
Johnson

mood
Publicité
Posté le 16-08-2006 à 17:59:43  profilanswer
 

n°1426921
zytry
Posté le 17-08-2006 à 22:33:04  profilanswer
 

En regardant vite fait l'algo, tu est sur de bien recevoir les 1024 derniers octets ?
Et tes variables tu peux (dois) les mettre dans ta fonction, il n'y a aucune utilité à les déclarer globales


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Probleme de socket ? ou de mise en place dans un fichier ?

 

Sujets relatifs
Probleme avec mon code source pour les socketsProbleme mise à la ligne javascript
probleme script vbs[C++][SOCKET]recv() bloque la première fois
[RESOLU][CSS] Problème de floataffichage d'un swf: firefox ok, IE probleme !
Problème d'impression de page webProblème de saut de ligne
résolu [API win32] probleme avec un petit exercice 
Plus de sujets relatifs à : Probleme de socket ? ou de mise en place dans un fichier ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR