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

Code::Blocks Discussion :

Erreur de compilation Winsock2 sous C::B


Sujet :

Code::Blocks

  1. #1
    A_B
    A_B est déconnecté
    Membre du Club Avatar de A_B
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 153
    Points : 55
    Points
    55
    Par défaut Erreur de compilation Winsock2 sous C::B
    bonjour je rencontre un probleme au niveau d'un programme de SOCKET sous codeblocks , voila mon code et le type d'erreur :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    #include <winsock2.h>
    #include <string.h>
    #include <stdio.h>
    #pragma comment(lib,"ws2_32.lib") // si vous compiler sous Borland
     
     
    //-------------------------------------------------------------------
     
    int main(int argc, char* argv[])
    {
    //etape 1 : creation
            WSADATA         wsaData;
            int             res,my_socket,port;
    //etape 2 : connection
            char            *adresse = "127.0.0.1"; //modifier cette adresse
    // avec celle du serveur
            sockaddr_in     adresse_socket;
    //etape 3 : recevoir et envoyer
            int     receive, envoie, total_rcv = 0;
            char    *chaine;
            char    Buffer[64];
    /*
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
     
                                  Résumé du chapitre 1
     
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    */
     
    if((res = WSAStartup(MAKEWORD(2,0), &wsaData)) != 0)
       printf("Impossible d'initialiser l'API Winsock 2.0\n");
     
    if((my_socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET)
       printf("Echec de création de la socket !\n");
    /*
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
     
                                  Résumé du chapitre 2
     
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    */
     
    memset(&adresse_socket,0x0,sizeof(adresse_socket));
    // definit à zéro toute la structure
     
    adresse_socket.sin_family = AF_INET;
    adresse_socket.sin_port = htons(port);
    adresse_socket.sin_addr.S_un.S_addr = inet_addr(adresse);
     
    if((res = connect(my_socket,(struct sockaddr *) &adresse_socket,
                             sizeof(adresse_socket))) != 0)
       printf("Impossible de se connecter !\n");
    /*
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
     
                                  Résumé du chapitre 3
     
    ////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////
    */
     
     
    if(send(my_socket,chaine,strlen(chaine),0) != strlen(chaine))
       printf("Echec de l'envoie des données !\n");
     
    while(total_rcv < strlen(chaine))
       {
    if((receive = recv(my_socket,Buffer,63,0)) <= 0)
       printf("Echec de reception des donnees !\n");
     
    total_rcv += receive;    // on ajoute la taille des données reçues
    Buffer[total_rcv] = '\0';// place à la fin du tableau le caractère nulle
    printf(Buffer);          // on afficher le contenu du buffer
       }
     
    return 0;
    }
    //----------------------------------------------------------------------
    l'erreur est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Project   : Console application
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\Documents and Settings\M_A\Bureau\
    --------------------------------------------------------------------------------
    Compiling: main.c
    main.c: In function `main':
    main.c:17: error: `sockaddr_in' undeclared (first use in this function)
    main.c:17: error: (Each undeclared identifier is reported only once
    main.c:17: error: for each function it appears in.)
    main.c:17: error: syntax error before "adresse_socket"
    main.c:47: error: `adresse_socket' undeclared (first use in this function)
    main.c:83:73: warning: no newline at end of file
    Process terminated with status 1 (0 minutes, 4 seconds)
    5 errors, 1 warnings

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Il faut utiliser struct sockaddr_in ou directement SOCKADDR_IN sous windows.



    http://emmanuel-delahaye.developpez.com/reseaux.htm

    Code source de mingw winsock2.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    struct sockaddr_in {
    	short	sin_family;
    	u_short	sin_port;
    	struct	in_addr sin_addr;
    	char	sin_zero[8];
    };
     
    typedef struct sockaddr_in SOCKADDR_IN;
    Je ne répondrai à aucune question technique en privé

  3. #3
    A_B
    A_B est déconnecté
    Membre du Club Avatar de A_B
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 153
    Points : 55
    Points
    55
    Par défaut
    Ca va le programme fonctionne, mais est ce que je peut le tester avec une edresse IP d'un pc connecte a Internet ...

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Il est inutile d'avoir internet pour tester un programme réseau... Tu as un réseau local, même si ce n'est qu'un seul ordinateur, avec au moins l'adresse 127.0.0.1

    Et il est possible de se débrouiller avec ça. Si on devait utiliser tous le temps plusieurs ordinateurs pour faire un programme réseau, on ne serait pas sorti de l'auberge
    Je ne répondrai à aucune question technique en privé

Discussions similaires

  1. Erreur de compilation template sous GCC MINGW
    Par sukoi dans le forum Langage
    Réponses: 14
    Dernier message: 14/04/2015, 11h57
  2. Réponses: 4
    Dernier message: 10/07/2006, 19h23
  3. erreur de compilation sous linux
    Par petdelascar dans le forum C
    Réponses: 11
    Dernier message: 21/12/2005, 20h10
  4. erreur de compilation sous DEV-C++
    Par felicity dans le forum C
    Réponses: 5
    Dernier message: 19/12/2005, 19h59
  5. Réponses: 4
    Dernier message: 27/08/2003, 21h34

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