Bonjour,

Je débute la programmation socket sous linux, je réalise donc une mini appli client-serveur.
Le client envoie un message au serveur qui l'affiche..enfin en principe, car j'ai un probleme au niveau de la connection

Voici le code du client, je l'ai commenté car je ne comprend pas encore tout, donc si je fais des erreurs de comprehension, n'hesitez pas à me corriger.
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
 
int main()
{
   struct sockaddr_in addr_serv; //structure contenant les infos du serveur
   char* msg = "Hello World !";  //message à envoyer
   int maSocket; // socket utilisée
 
   addr_serv.sin_family = AF_INET; //type de protocole : internet
   addr_serv.sin_addr.s_addr = htonl(INADDR_ANY); // adresse ip locale
   addr_serv.sin_port = htons(80); // port 80
   maSocket = socket(AF_INET,SOCK_STREAM,0); //creation de la socket
  /* on se connecte grave à la socket au serveur decrit par addr_serv*/
   if( (connect(maSocket,(struct sockaddr *)&addr_serv,sizeof(addr_serv))) == -1 )
   {
      printf("Connexion erreur !\n");
   }
   send(maSocket,msg,sizeof(msg),0); // on envoie le message
   close(maSocket); //on ferme la socket
 
   return 0;
}
Voici maintenant le serveur, idem pour les commentaires, je suis là pour apprendre.
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
 
int main()
{
   int maSocket; // socket utilisée
   struct sockaddr_in localaddr; // structure qui decrit le serveur
   struct sockaddr_in addr_entrant; // structure qui decrit le client qui se connecte
   uint entrantlen; //taille de la structure addr_entrant
   char *msg;  //buffer pour le message
 
   /*Création socket*/
   if ( (maSocket = socket(AF_INET,SOCK_STREAM,0)) == - 1 )
   {
      printf("Erreur création socket !\n");
      return 1;
   }
   /*On remplit la structure decrivant le serveur*/
   localaddr.sin_family = AF_INET; // protocole internet
   localaddr.sin_port = htons(80);  // port 80 ouvert
   localaddr.sin_addr.s_addr = htonl(INADDR_ANY); // adresses ip locales
   bind(maSocket,(struct sockaddr*)&localaddr,sizeof(localaddr)); //on ouvre le tout
   /*Attente d'une connexion*/
   if ( listen(maSocket,1) != 0 )
   {
      printf("Erreur lors du listen() !\n");
      return 3;
   }
   /*Si connexion on l'accepte et on remplit la struc du client qui se connecte*/
   accept(maSocket,(struct sockaddr*)&addr_entrant,&entrantlen);
   /* On reçoit le mesage dans le tampon*/
   recv(maSocket,msg,sizeof(msg),0);
   /*On ferme la socket*/
   close(maSocket);
   printf("%s\n",msg);
 
   return 0;
}
Voila donc vous l'avez deviné quand je lance le prog client (apres avoir lancé le serveur en arriere plan biensur), il me dit "connexion erreur !"
Je ne trouve pas l'erreur, j'ai pas du tout piger, merci pour votre aide.

Sorry