Salut, je dois faire pour un tp un client-serveur en C avec les sockets, et j'ai des interrogations à vous soumettre.
Tout d'abord, le but du tp : un serveur se connecte et écoute sur un port donné, puis n clients se connectent au serveur (on précise le port et l'adresse du serveur). Lorsqu'un client envoie un message au serveur, le serveur transmet ce message aux (n-1) autre clients.
Et ma question :
À la fac, le réseau est constitué d'un gros serveur et de pleins de terminaux, du coup je développe et je teste en local et toutes les adresses sont 127.0.0.1. Et d'après ce que j'ai compris, avec les sockets on identifie les clients uniquement par leur port et leur ip. Comment faire pour résoudre ça ?
Pour illustrer ce que j'ai commencé à faire :
Le problème, c'est que j'ai plusieurs sockets qui écoutent toutes sur 127.0.0.1 et sur le même port, et donc mon code ne marche pas...
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 fd_set readfds; int nfds, nr; FD_SET(serveur->socket, &readfds); nfds = serveur->socket + 1; while(1) { nr = select(nfds, &readfds, 0, 0, 0); if(nr == -1) { // traitement de l'erreur } else { if(FD_ISSET(serveur->socket, &readfds)) { // connexion d'un nouveau client // j'associe une nouvelle socket au client } } }
Ce qui me gène, c'est que ce code ne fonctionne pas en local, mais devrait fonctionner entre différentes machines (j'ai pas testé), et moi je voudrais une solution qui fonctionne dans les deux configurations !
Quelqu'un a-t-il une idée ? Merci d'avance !!
Partager