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 :

Erreur "pthread_create" dans l'utilisation de Sockets en C


Sujet :

Réseau C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Par défaut Erreur "pthread_create" dans l'utilisation de Sockets en C
    Bonjour,

    Dans le cadre de mon cursus universitaire, je suis actuellement en train de développer une application en langage C. Pour cela j'utilise des Socket UNIX.
    Mon but est de transférer des fichiers entre 2 machines distantes. Pour cela, j'utilise le code suivant :

    Le serveur]
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #include <sys/types.h> //différentes librairies
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <netdb.h>
    #include <stdio.h>
    #include <unistd.h> /* close() */
    #include <string.h> /* memset() */
    #define LOCAL_SERVER_PORT 50000
    #include <pthread.h>
     
    void *stockage () //fonction stockage
    {
    int num_enregistrement;
    char nom, prenom;
    int nb_points;
     
    FILE *fich;
     
    fich=fopen("/home/simon/Bureau/exam.txt","r");
    fscanf(fich,"%d %s %s %d", &num_enregistrement , &nom, &prenom, &nb_points);
     
    printf("\nlecture reussi !!!\n");
    fclose(fich);
    return ((void *)&num_enregistrement);
    }
     
    int main(int argc,char * argv[])
    {
    	int sock_ecoute,sock_service,n;
    	struct sockaddr_in cliAddr, servAddr;
    	pthread_t thread [5];
    	socklen_t longueur;
    	int num_thread = 0;
    	sock_ecoute= socket(AF_INET, SOCK_STREAM, 0);
    	memset(&servAddr,0,sizeof(struct sockaddr_in));
    	servAddr.sin_addr.s_addr = htonl(INADDR_ANY); /* Adresse IP automatique */
    	servAddr.sin_family = AF_INET; /* Protocole familial (IP) */
    	servAddr.sin_port = htons(LOCAL_SERVER_PORT); /* Listage du port*/
     
    	bind(sock_ecoute,(struct sockAddr*) &servAddr,sizeof(servAddr));
     
    	listen(sock_ecoute,5);
     
     
    //boucle infinie
    while (1)
    {
    	longueur=sizeof(struct sockaddr_in);
    	sock_service=accept(sock_ecoute,(struct sockAddr*)&cliAddr,&longueur);
    	pthread_create(&thread[num_thread],NULL,stockage,&sock_service);
    	num_thread++;
    }
     
    }
    Lors de la compilation j'obtiens cependant l'erreur suivante :
    .text+0x179): undefined reference to `pthread_create'
    collect2: ld returned 1 exit statu
    s

    Comment puis-je la corriger ?
    En vous remerciant par avance.
    Cordialement.
    Simon

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 962
    Par défaut
    Citation Envoyé par simondu43 Voir le message
    Bonjour,

    Dans le cadre de mon cursus universitaire, je suis actuellement en train de développer une application en langage C. Pour cela j'utilise des Socket UNIX.
    Mon but est de transférer des fichiers entre 2 machines distantes. Pour cela, j'utilise le code suivant :

    Lors de la compilation j'obtiens cependant l'erreur suivante :
    .text+0x179): undefined reference to `pthread_create'
    collect2: ld returned 1 exit statu
    s

    Comment puis-je la corriger ?
    En vous remerciant par avance.
    Cordialement.
    Simon
    "ld returned 1": c'est l'éditeur de liens pas le compilateur …
    vous n'avez oublié de spécifier de lier votre programme avec la librairie pthread avec l'option

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 18
    Par défaut
    Merci pour l'information !
    Cela fonctionne maintenant.

    Cordialement.

Discussions similaires

  1. Erreur dans l'utilisation de SWAP
    Par mire dans le forum Langage
    Réponses: 12
    Dernier message: 15/03/2003, 21h39

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