Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pb de sockets

    22 mars 2008 à 13:55:58

    Salut à tous,

    J'essaie de faire un programme avec des sockets avec lequel je puisse faire communiquer des informations.
    J'utilise jGrasp sous linux.

    J'ai un problème lors de la compilation de mon fichier .h et je n'arrive pas à trouver la solution. :(
    Voici le message d'erreur :

    Serveur.h:7: erreur: expected "=" , "," , ";" , "asm" , "__attribute__" before Serveur
    1. #ifndef SERVEUR_H
    2. #define SERVEUR_H
    3. //#include <iostream>
    4. //using namespace std;
    5. class Serveur{
    6.       public :
    7.       //////////////////////
    8.       // Constructeur
    9.        Serveur();
    10.       // Creation de socket, bind, listen, accept
    11.       int MonServeur();
    12.       // Permet de lire dans un socket en mode connecte (TCP)
    13.       int Reception();
    14.       // Permet d'Ecrire dans un socket (envoyer des donnees) en mode connecte (TCP)
    15.       int Envoi();
    16.       // Permet la fermeture d'un socket en permettant au système d'envoyer les donnees restantes (pour TCP)
    17.       void Close();
    18.       /////////////////////
    19.       // Desctructeur
    20.       ~Serveur();
    21. };
    22. #endif


    J'ai un autre problème de compilation dans mon main-serveur.cpp et toujours pareil j'ai toujours pas trouvé de solution.
    Voici le message d'erreur :

    main-serveur.cpp:6:21: erreur: winsock.h: Aucun fichier ou répertoire de ce type
    1. #include <cstdlib>
    2. #include <iostream>
    3. #include <sys/types.h>
    4. #include <sys/socket.h>
    5. #include <netinet/in.h>
    6. #include <winsock.h>
    7. #include "Serveur.h"
    8. using namespace std;
    9. int main(int argc, char *argv[]){
    10.     Serveur serveur_test;
    11.     // Creation du socket
    12.          serveur_test.MonServeur();
    13.     while(1){
    14.              // Reception de donnees
    15.              serveur_test.Reception();
    16.              // Envoi de donnees
    17.              serveur_test.Envoi();
    18.              }
    19.     // Fermeture du socket
    20.     serveur_test.Close();
    21.          //~Serveur();
    22. }


    Voilà pour info mon Serveur.cpp

    1. #include <cstdlib>
    2. #include <iostream>
    3. #include <string.h>
    4. #include <sys/types.h>
    5. #include <sys/socket.h>
    6. #include <netinet/in.h>
    7. #include <arpa/inet.h>
    8. #include "Serveur.h"
    9. //////////////////////////////////////////////////////////////////
    10. ///////////////// CONSTRUCTEUR ///////////////////////////////////
    11. //////////////////////////////////////////////////////////////////
    12. Serveur::Serveur(){}
    13. int Serveur::MonServeur(){
    14. ////////////// CREATION SOCKET ///////////////////////////////////
    15.     int descripteur;
    16.     int longueur_adresse_client;
    17.     struct sockaddr_in adresse_serveur, adresse_client;
    18.     int a;
    19.     descripteur = socket(AF_INET,SOCK_STREAM,0);
    20.     if (descripteur < 0)
    21.         {
    22.             std::cout << "ERREUR ouverture socket\n";
    23.         }
    24.     bzero((char *) &adresse_serveur, sizeof(adresse_serveur));
    25. ////////////// FONCTION BIND /////////////////////////////////////
    26.     adresse_serveur.sin_family = AF_INET;
    27.     adresse_serveur.sin_addr.s_addr = inet_addr ("127.0.0.1"); // INADDR_ANY    c'est pour 2 machines différentes
    28.     adresse_serveur.sin_port = 2050;
    29.     a = bind(descripteur, (struct sockaddr *) &adresse_serveur, sizeof(adresse_serveur));
    30.     if (a < 0)
    31.         {
    32.             std::cout << "ERREUR sur Bind\n";
    33.         }
    34. /////////////////  LISTEN ///////////////////////////////////////
    35.     listen(descripteur,5);
    36.     longueur_adresse_client = sizeof(adresse_client);
    37. ///////////////// ACCEPT ////////////////////////////////////////
    38.     int new_descripteur;
    39.     new_descripteur = accept(descripteur, (struct sockaddr *) &adresse_client, ( socklen_t *)&longueur_adresse_client);
    40.       if (new_descripteur < 0)
    41.         {
    42.             std::cout << "ERREUR sur Accept\n";
    43.         }
    44.  }
    45. //////////////// FONCTION RECEVOIR /////////////////////////////////
    46. int Serveur::Reception ()
    47. {
    48.     int retour, new_descripteur;
    49.     char buffer[256];
    50.     while(1)
    51.       {
    52.          bzero(buffer,256);
    53.          retour = recv(new_descripteur,buffer,255,0);
    54.          if (retour < 0)
    55.          {
    56.           std::cout << "ERREUR sur Reception\n";
    57.          }
    58.          std::cout << "Vous avez un nouveau message: %s\n" << buffer;
    59.       }
    60. }
    61. //////////////// FONCTION  ENVOYER ///////////////////////////////////
    62. int Serveur::Envoi ()
    63. {
    64.     int retour, new_descripteur;
    65.          char buffer[256];
    66.     while(1)
    67.       {
    68.          bzero(buffer,256);
    69.          retour = send(new_descripteur,buffer,255,0);
    70.          if (retour < 0)
    71.          {
    72.           std::cout << "ERREUR sur Envoi\n";
    73.          }
    74.       }
    75. }
    76. //////////////// FONCTION CLOSE ///////////////////////////////////////
    77. void Serveur::Close()
    78. {
    79.     int descripteur;
    80.     close(descripteur);
    81. }
    82. //////////////////////////////////////////////////////////////////////////
    83. /////////////////// FONCTION DESTRUCTEUR /////////////////////////////////
    84. //////////////////////////////////////////////////////////////////////////
    85. Serveur::~Serveur(){}


    Ce serait sympa si quelqu'un pouvait me donner un coup de main.
    Merci bien

    Ciao
    • Partager sur Facebook
    • Partager sur Twitter

    Pb de sockets

    × 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