Pb d'envoi de structure par socket [Résolu]

Signaler
Messages postés
31
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
10 mars 2009
-
Messages postés
29
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
16 juin 2008
-
Bonjour à tous,


Je dois transférer un fchier par socket d'un client vers un serveur.
Pour ce faire, je souhaite en premier lieu, envoyer une structrue contenant la taille et le nom du fichier. Le rpoblème est que si je récupère bien la taille, je n'ai pas le nom du fichier


Cette  structure est déclarée dans mon client et dans mon serveur
struct head 
{
  int size;
  char *FichierTransfertSock;
};

Côté client :
  struct head entete; 
  // Envoi des références du fichier à* transférer
  entete.size=TailleFichier(FichierTransfert);
  entete.FichierTransfertSock = FichierTransfert;
  nbchar = send(sock, (char *)&entete, sizeof(struct head),0);
  if (nbchar != sizeof(entete))  
  {
    printf("erreur envoi structure head");
    close(sock);
    exit(2);       
  }

J'ai fait de sprintf pour vérifier que les éléments de ma strcuture soit bien valorisé et c'est ok.


Côté serveur :
  struct head entete;
  nbchar = recv(sock_service,(char *)&entete,sizeof(struct head),0); 
  printf("fichier à créer : %s  Taille fichier : %d\n",entete.FichierTransfertSock,entete.size);     


Les printf me donnent le résultat suivant :
fichier à créer :   Taille fichier : 256


Forcément derrière cela me pose un problème puisque le client m'envoie des lignes que je dois stocker dans un fichier pour lequel je n'ai pas de nom......


Merci d'avance pour l'aide que vous pourrez m'apporter.

3 réponses

Messages postés
29
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
16 juin 2008

salut, tu envoies un pointeur plutôt que la valeur elle même
...

une solution:
char *FichierTransfertSock;
devient
char  FichierTransfertSock[80];

strcpy (FichierTransfertSock,FichierTransfert);

to sizeof sera meilleur et ton envoi (normalement) aussi ..

mais il existe d'autres techniques ....
Messages postés
31
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
10 mars 2009

Merci à toi.
En effet, d'un coup cela fonctionne beaucoup mieux.
Messages postés
29
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
16 juin 2008

thank's