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.
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 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; }
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 !"
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; }![]()
Je ne trouve pas l'erreur, j'ai pas du tout piger, merci pour votre aide.
Sorry
Partager