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 :
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
}
}
} |
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...
Partager