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

C++ Discussion :

Problème de compilation....


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Par défaut Problème de compilation....
    Bonsoir,
    Je souhaite apprendre à utiliser les sockets, j'ai donc pris le seul tuto qui me paraisse potable : http://c.developpez.com/WalrusSock/

    Etant donné que j'obtient de multiples erreures quand j'écris moi même le code j'ai essayé directement mettre le code final qu'il propose et résultats de la compilation :
    Compilateur: Default compiler
    Building Makefile: "C:\Dev-Cpp\socket\Makefile.win"
    Exécution de make...
    make.exe -f "C:\Dev-Cpp\socket\Makefile.win" all
    g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" -lws2_32 -lwsock32

    main.cpp:1:10: #include expects "FILENAME" or <FILENAME>
    main.cpp:4: error: `main' must return `int'
    main.cpp: In function `int main(...)':
    main.cpp:5: error: `WSADATA' undeclared (first use this function)
    main.cpp:5: error: (Each undeclared identifier is reported only once for each function it appears in.)
    main.cpp:5: error: expected `;' before "WSAData"
    main.cpp:6: error: `MAKEWORD' undeclared (first use this function)

    main.cpp:6: error: `WSAData' undeclared (first use this function)
    main.cpp:6: error: `WSAStartup' undeclared (first use this function)
    main.cpp:7: error: `SOCKET' undeclared (first use this function)
    main.cpp:7: error: expected `;' before "sock"
    main.cpp:8: error: `SOCKADDR_IN' undeclared (first use this function)
    main.cpp:8: error: expected `;' before "sin"
    main.cpp:11: error: `sock' undeclared (first use this function)

    main.cpp:11: error: `AF_INET' undeclared (first use this function)
    main.cpp:11: error: `SOCK_STREAM' undeclared (first use this function)
    main.cpp:11: error: `socket' undeclared (first use this function)
    main.cpp:12: error: `sin' undeclared (first use this function)
    main.cpp:12: error: `inet_addr' undeclared (first use this function)
    main.cpp:14: error: `htons' undeclared (first use this function)
    main.cpp:15: error: `SOCKADDR' undeclared (first use this function)
    main.cpp:15: error: expected primary-expression before ')' token
    main.cpp:15: error: `connect' undeclared (first use this function)
    main.cpp:16: error: `recv' undeclared (first use this function)
    main.cpp:17: error: `closesocket' undeclared (first use this function)
    main.cpp:18: error: `WSACleanup' undeclared (first use this function)

    make.exe: *** [main.o] Error 1

    Exécution terminée

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Par défaut
    oups j'oublais le code :

    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
    #include 
    #pragma comment(lib, "ws2_32.lib")
    void main()
    {
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2,0), &WSAData);
    SOCKET sock;
    SOCKADDR_IN sin;
    char *buffer = new char[255];
    /* Tout est configuré pour se connecter sur IRC, haarlem, Undernet. */
    sock = socket(AF_INET, SOCK_STREAM, 0);
    sin.sin_addr.s_addr= inet_addr("62.250.14.6");
    sin.sin_family= AF_INET;
    sin.sin_port= htons(6667);
    connect(sock, (SOCKADDR *)&sin, sizeof(sin));
    recv(sock, buffer, sizeof(buffer), 0);
    closesocket(sock);
    WSACleanup();
    }
    J'ai surement fait de grosses erreures mais j'ai vraiment du mal avec les sockets lol ^^

  3. #3
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Tu programmes avec g++. La librairie utilisée par ce tuto est la lib winsock, si tu es sûr Windows et que tu as la librairie, il faut l'inclure manuellement dans les options de l'éditeur de liens car la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma comment(lib, "ws2_32.lib")
    Est reconnue uniquement par Visual C++.

    De plus après le #include , il faudrait ajouter le header comme ceci:


  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Par défaut
    Lol merci beaucoup j'ai honte^^ je pensais que l librairie été intégrée dans l'exemple de code qui donnait , que le #include <winsock2.h> y était déjà
    Ca m'apprendra a faire un simple copier coller donc maintenant ca me donne plus que 2 erreures :

    Compilateur: Default compiler
    Building Makefile: "C:\Dev-Cpp\testsocket\Makefile.win"
    Exécution de make...
    make.exe -f "C:\Dev-Cpp\testsocket\Makefile.win" all
    g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" -lwsock32

    main.cpp:4: error: `main' must return `int'

    make.exe: *** [main.o] Error 1

    Exécution terminée
    [/quote]

  5. #5
    Membre émérite Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Par défaut
    main.cpp:4: error: `main' must return `int'
    main doit retourner int!
    Tu dois faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int main()
    {
    //
    return 0;
    }

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Par défaut
    Merci beaucoup a vous deux j'ai résolu mon problème!

  7. #7
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Alors n'oubile pas le en-bas à gauche

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Par défaut
    Oui mais je vais encore en profité de ce topic désolé d'abuser de votre gentillesse^^

    Alors voilà tout va bien au niveau de la connection j'ai fait des test et ça marche
    Toujours sur le même tutorial, je n'ai pas d'erreures à la compilation, je veux envoyer un message serveur->client avec la commande send()...je l'utilise comme dans le tuto mais ca ne m'affiche rien sur le client même si apparament l'envoi c'est bien passé, et pourtant la connexion est établie et le firewall fermé^^

    Code 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
    #include <cstdlib>
    #include <iostream>
    #include <winsock2.h>
     
    using namespace std;
     
    int 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(4148);
    bind(sock, (SOCKADDR *)&sin, sizeof(sin));
    listen(sock, 1);
    cout<<"\nWaiting for connection....\n" ;
    while(1)
    {
    int sinsize = sizeof(csin);
    if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
    {
              cout<<"Connected\n";
    send(csock, "Hello world!\r\n", 14, 0);
     
    }
        system("PAUSE");
        return EXIT_SUCCESS;
    }}

Discussions similaires

  1. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52
  2. problème de compil devc++ socket
    Par stefdem dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2003, 11h33
  3. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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