Partage
  • Partager sur Facebook
  • Partager sur Twitter

c'est quoi ces erreurs socket

Sujet résolu
    16 août 2009 à 22:18:38


    Regardez ce programme serveur que j'ai copier sur le net je l'ai nommer server.c et j'utilise code::blocks comme ide.
    à la suites du code je mettrai les erreurs de compilation que j'obtiens pour la plupart de ces codes réseau copier. je ne comprend pas ces erreurs.ai je fichier maquant dans mon ide? Est ce que vous pouvez avoir des tutos sur programmation réseau en c ou c++?
    je suis sous Windows
    /***********************************************************­****************************/
    /***********************************************************­***************************/
    /***********************************************************­***************************/
    #if defined (WIN32)
    #include <winsock2.h>
    typedef int socklen_t;
    #elif defined (linux)
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <unistd.h>
    #define INVALID_SOCKET -1
    #define SOCKET_ERROR -1
    #define closesocket(s) close(s)
    typedef int SOCKET;
    typedef struct sockaddr_in SOCKADDR_IN;
    typedef struct sockaddr SOCKADDR;
    #endif

    #include <stdio.h>
    #include <stdlib.h>
    #define PORT 23



    int main(void)
    {
    #if defined (WIN32)
    WSADATA WSAData;
    int erreur = WSAStartup(MAKEWORD(2,2), &WSAData);
    #else
    int erreur = 0;
    #endif

    /* Socket et contexte d'adressage du serveur */
    SOCKADDR_IN sin;
    SOCKET sock;
    socklen_t recsize = sizeof(sin);

    /* Socket et contexte d'adressage du client */
    SOCKADDR_IN csin;
    SOCKET csock;
    socklen_t crecsize = sizeof(csin);

    int sock_err;


    if(!erreur)
    {
    /* Création d'une socket */
    sock = socket(AF_INET, SOCK_STREAM, 0);

    /* Si la socket est valide */
    if(sock != INVALID_SOCKET)
    {
    printf("La socket %d est maintenant ouverte en mode TCP/IP\n", sock);

    /* Configuration */
    sin.sin_addr.s_addr = htonl(INADDR_ANY); /* Adresse IP automatique */
    sin.sin_family = AF_INET; /* Protocole familial (IP) */
    sin.sin_port = htons(PORT); /* Listage du port */
    sock_err = bind(sock, (SOCKADDR*)&sin, recsize);

    /* Si la socket fonctionne */
    if(sock_err != SOCKET_ERROR)
    {
    /* Démarrage du listage (mode server) */
    sock_err = listen(sock, 5);
    printf("Listage du port %d...\n", PORT);

    /* Si la socket fonctionne */
    if(sock_err != SOCKET_ERROR)
    {
    /* Attente pendant laquelle le client se connecte */
    printf("Patientez pendant que le client se connecte sur le port %d...\n", PORT);
    csock = accept(sock, (SOCKADDR*)&csin, &crecsize);
    printf("Un client se connecte avec la socket %d de %s:%d\n", csock, inet_ntoa(csin.sin_addr), htons(csin.sin_port));
    }
    else
    perror("listen");
    }
    else
    perror("bind");

    /* Fermeture de la socket client et de la socket serveur */
    printf("Fermeture de la socket client\n");
    closesocket(csock);
    printf("Fermeture de la socket serveur\n");
    closesocket(sock);
    printf("Fermeture du serveur terminée\n");
    }
    else
    perror("socket");

    #if defined (WIN32)
    WSACleanup();
    #endif
    }

    return EXIT_SUCCESS;
    }
    /***************************************************************************************/
    /************* voici les erreurs de compilation ************************************/
    /***************************************************************************************/

    server.c undefined reference to 'wsastratup'
    server.c undefined reference to 'socket@12'
    server.c undefined reference to 'htonl@4'
    server.c undefined reference to 'htons@4'
    server.c undefined reference to 'bind@12'
    server.c undefined reference to 'lislen@8'
    server.c undefined reference to 'accept@12'
    server.c undefined reference to 'htons@4'
    server.c undefined reference to 'inet_ntoa@4'
    server.c undefined reference to 'closesocket@4'
    server.c undefined reference to 'closesocket@4'
    server.c undefined reference to 'WSACLenup'

    /*////////////////////////////////////////////////////////////////////////////////////////////////////////////*/
    • Partager sur Facebook
    • Partager sur Twitter
      16 août 2009 à 22:40:26

      Tu n'as pas lié la bibliothèque ws2_32.lib.
      Au lieu de C/C des codes bêtement, apprends !
      • Partager sur Facebook
      • Partager sur Twitter
        16 août 2009 à 23:01:34

        est ce qu'on inclut les ".lib"?en le fesant incluant <ws2_32.lib> rien ne foctionne
        ws2_32.lib:no such file ordirectory.
        • Partager sur Facebook
        • Partager sur Twitter
          16 août 2009 à 23:19:15

          Citation : tchsimons

          est ce qu'on inclut les ".lib"?en le fesant incluant <ws2_32.lib> rien ne foctionne
          ws2_32.lib:no such file ordirectory.


          Apprends à programmer, tu n'avanceras pas en faisant des choses que tu ne comprends pas.
          • Partager sur Facebook
          • Partager sur Twitter
            16 août 2009 à 23:42:15

            spt ne soit pas dur avec moi noob4ever.les chose ne sont pas encore tres fixe dans ma tete. En apprenant je veux pratiquer. j'ai ajouté la ligne suivante:#pragma comment(lib, "ws2_32.lib") apres #include <winsock2.h>.mais toujours rien.dans mes fichiers ws2_32.lib n'existe pas dans les plugins.mais dans lib j'ai plutot libws2_32.a comment doit je l'utilisé ? j'ai fait un max de combinaison possibles.
            • Partager sur Facebook
            • Partager sur Twitter
              16 août 2009 à 23:54:10

              Il te suffit de linker libws2_32.a. Avec codeblocks, va chercher dans Build options > Linker settings.
              • Partager sur Facebook
              • Partager sur Twitter
                17 août 2009 à 0:12:07

                j'arrive pas je n'ai pas "option" dans le menu build de mon code::block
                • Partager sur Facebook
                • Partager sur Twitter
                  17 août 2009 à 0:15:53

                  Clique-droit sur le titre de ton projet dans la fenêtre Management. "Build options" est dans la liste. :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 août 2009 à 0:46:00

                    Merci beacoup mon grand "Zhut" toutes les erreurs ont disparues .Maintenant je démare le serveur,dès-que le client tout s'arette.je n'est pas le temps de visualiser les effets des fonctions introduites.je vais dabord voir si ce n'est pas un probleme de boucle.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 novembre 2009 à 13:06:10

                      en résumé:clic droit sur le proget>properties>project's build option...>linker setting>add. dans petite fenetre qui s'ouvre mettre le chemin vers libwsock32.a (il est dans mingw/lib de code::block)s'il n'est pas present , le telecharger et le coller. puis recompiller.



                      Merci à tous ce qui ont posté sur ce problem.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      c'est quoi ces erreurs socket

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown