IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

impossible de recevoir des données appli client/serveur


Sujet :

Réseau C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Points : 4
    Points
    4
    Par défaut impossible de recevoir des données appli client/serveur
    bonjour,
    je dois réaliser un programme client/serveur (serveur multiclient, avec pthread). mon client arrive a se connecter au serveur, mais lorsque que j'envoie des données impossible de les recevoir sur le seveur, je recois des données vide ..
    pourtant avec wireshark je vois que mes données arrivent sur le serveur.
    voici la partie de mon serveur chargé de recevoir les données:

    je lance mon thread:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    pthread_t receptionner;
     
    		/* Lancement du thread */
     
       		pthread_create (&receptionner, NULL, reception, structThread);
    ma structure Structhread, qui me permet de récup l'id du socket,l'adresse etc..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    struct StructThread
    {
       pthread_t thread;
       SOCKADDR_IN sin;
       int recsize;
       SOCKET sock;
       int err;
       char data[500];
    };
    et enfin ma fonction chargé de receptionner les données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    void *reception (void *p_data)
    {
     
       	struct StructThread *structThread = (struct StructThread *)p_data; 
    	char data[4096];	
    	int sock_err;
    	size_t nb_rec;
    	Ldonnee* ladonnee = (Ldonnee*) malloc(sizeof(Ldonnee)); // structure que j'ai crée, qui contient un champ str de type xmlChar* ou je stock mes données recu
    	ladonnee->str = (xmlChar *) malloc(sizeof(xmlChar));
          	while(1) 
          	{
             	/* Reception des donnees de la socket */		
             	sock_err = recv (structThread->sock, data, strlen(data),0);
    				nb_rec = sock_err;
    			if(sock_err > 0) //si il y a des données
    			{
    				data[nb_rec] = 0;
    				ladonnee->taille=4096;
    				ladonnee->socket=structThread->sock;
    				strcpy(data, ladonnee->str);
    				memset(data, 0 ,sizeof (data-1));
    				fflush (stdout);
    			}
    			else if (sock_err == 0)
    			{
    				fin = 1;
    				data[0] = '\0';
    			}
    		}	
          	shutdown (structThread->sock, 2);
          	printf ("[RESEAU] - Client deconnecte (Socket %d)\n", structThread->sock);
          	close (structThread->sock);
          	free (structThread);
       	return NULL;
     
    }

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sock_err = recv (structThread->sock, data, strlen(data),0);
    Le strlen(data) ne signifie pas grand chose. A remplacer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sock_err = recv (structThread->sock, data, sizeof data - 1,0);
    Le -1 est là pour pouvoir ajouter un '\0' en bout de chaine.

    Ici, je pense que tu as interverti les paramètres de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy(data, ladonnee->str);

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2014, 14h49
  2. Réponses: 4
    Dernier message: 20/05/2014, 18h38
  3. Réponses: 7
    Dernier message: 07/01/2009, 08h53
  4. Envoyer des données du client au serveur
    Par thetraveller dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 13/07/2006, 22h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo