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 :

[socket C windows]undefined references...


Sujet :

Réseau C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 12
    Points
    12
    Par défaut [socket C windows]undefined references...
    bonjour, je cherche à programmer sous windows une socket serveur, cela fait un momen,t que je cherche sur le net et nottament sur le site de developper.com. je suis tomber sur l'article "les sockets C/C++ démystifiés" de TheWarlus,

    le problème étanbt que lorsque je cherche à compiler son code, j'ai les erreurs suivantes :
    C:\Dev-Cpp\Ge-lice\socketserver.c In function `main':
    6 C:\Dev-Cpp\Ge-lice\socketserver.c [Warning] return type of 'main' is not `int'
    6 C:\Dev-Cpp\Ge-lice\socketserver.c multiple definition of `main'
    6 C:\Dev-Cpp\Ge-lice\socketserver.c first defined here
    [Linker error] undefined reference to `WSAStartup@8'
    [Linker error] undefined reference to `socket@12'
    [Linker error] undefined reference to `htons@4'
    [Linker error] undefined reference to `bind@12'
    [Linker error] undefined reference to `listen@8'
    [Linker error] undefined reference to `accept@12'
    [Linker error] undefined reference to `send@16'
    6 C:\Dev-Cpp\Ge-lice\socketserver.c ld returned 1 exit status
    C:\Dev-Cpp\Ge-lice\Makefile.win [Build Error] ["client] Error 1
    j'utilise dev C++
    et le code est le suivant :


    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
     #include <stdio.h>
    #include <winsock2.h>
    #pragma comment(lib, "ws2_32.lib")
    void main()
    {
         WSADATA WSAData;
         WSAStartup(MAKEWORD(2,0), &WSAData);
         SOCKET sock;
         SOCKET csock;
         SOCKADDR_IN sin;
         SOCKADDR_IN csin;
         sock = socket(AF_INET, SOCK_STREAM, 0);
         sin.sin_addr.s_addr            = INADDR_ANY;
         sin.sin_family                = AF_INET;
         sin.sin_port                = htons(23);
         bind(sock, (SOCKADDR *)&sin, sizeof(sin));
         listen(sock, 0);
         while(1)
         {
                 int sinsize = sizeof(csin);
                 if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
                 {
                           send(csock, "Hello world!\r\n", 14, 0);
                 }
         }
    }
    j'avoue que là je nage un peu surement pour une connerie.....
    merci de me donner un coup de main...

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Il faut rajouter le fichier libws2_32.lib (un truc dans le genre qui se trouve dans C:\Dev Cpp\lib\) à ton projet.

    Projet -> Options
    Et la cherche, y'a un onglet pour rajouter les bibliotheques à ton projet.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    bon ça c'est bon j'ai trouvé
    par contre j'ai toujours des erreurs (3) que je comprend pas...

    C:\Dev-Cpp\Ge-lice\socketserver.c In function `main':
    6 C:\Dev-Cpp\Ge-lice\socketserver.c [Warning] return type of 'main' is not `int' 6 C:\Dev-Cpp\Ge-lice\socketserver.c multiple definition of `main'
    6 C:\Dev-Cpp\Ge-lice\socketserver.c first defined here
    6 C:\Dev-Cpp\Ge-lice\socketserver.c ld returned 1 exit status
    C:\Dev-Cpp\Ge-lice\Makefile.win [Build Error] ["client] Error 1
    la ligne 6 est celle contenant "void main()" dans le code ci-dessus...

  4. #4
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Comme d'habitude... C'est int main(void) et tu dois t'assurer que tu crees une application console, pas une application Win32.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur décisionnel
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    pour le int main(void) je l'avais déjà changer mais ça me renvoie toutjours :

    multiple definition of `main'
    first defined here
    ld returned 1 exit status
    C:\Dev-Cpp\Ge-lice\Makefile.win [Build Error] ["client] Error 1
    enfion quand j'ai créer mon projet j'ai bien spécifé que c'était une application consloe et non pas une application win 32 (d'ailleurs on se rend vite compte de la différence avec le code que dev c++ génére automatiquement)...

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <winsock2.h>
    #pragma comment(lib, "ws2_32.lib")
     
    int main(void)
    {
         WSADATA WSAData;
         WSAStartup(MAKEWORD(2,0), &WSAData);
         SOCKET sock;
         SOCKET csock;
         SOCKADDR_IN sin;
         SOCKADDR_IN csin;
         sock = socket(AF_INET, SOCK_STREAM, 0);
         sin.sin_addr.s_addr			= INADDR_ANY;
         sin.sin_family				= AF_INET;
         sin.sin_port				= htons(23);
         bind(sock, (SOCKADDR *)&sin, sizeof(sin));
         listen(sock, 0);
         while(1)
         {
                 int sinsize = sizeof(csin);
                 if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
                 {
                           send(csock, "Hello world!\r\n", 14, 0);
                 }
         }
         system("PAUSE");
         return 0;
    }

  6. #6
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    La seule solution, c'est que le projet actif contient un autre fichier qui definit egalement main()...

  7. #7
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Le but des tutos n'est pas de copier/coller et apres de dire ca marche pas. Faut utiliser tes connaissances en C (si du moins tu en as).

    Le message du compilateur est des plus explicites à toi d'agir en consequence si tu sais faire.

    Ne te jette pas dans les sockets si tu ne sais pas programmer en C.

Discussions similaires

  1. [SDL_mixer] Compilation sous windows, undefined reference
    Par sunny62 dans le forum SDL
    Réponses: 10
    Dernier message: 05/02/2015, 14h00
  2. winsock.h : undefined reference...
    Par abraxas dans le forum Dev-C++
    Réponses: 14
    Dernier message: 06/08/2012, 13h42
  3. code::block et row socket : undefined reference to socket
    Par boboss123 dans le forum Réseau
    Réponses: 2
    Dernier message: 13/07/2012, 14h03
  4. g++ : undefined reference to ...
    Par le_barbu dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 14/05/2004, 07h23
  5. utilisation des sockets sous windows
    Par Tupac dans le forum Réseau
    Réponses: 2
    Dernier message: 21/12/2002, 18h24

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