Bonjour,
Je travailles actuellement sur un projet de lcient/serveur VPN.
Dans ma version finale le serveur est censé pouvoir créé de nouveux réseaux virtuels et chaque réseau peut bien sûr accepter plusieurs clients.
Le problème c'est que, alors que tout depuis que j'ai apporté les dernières modif au programme, quand je lance deux fois le programme client pour les connecter au serveur sur le même réseau, le numéro de la socket attribuée pour les deux clients est la même.
Du coup ça me fout un bordel monstre (enfin, du moins je penses que c'est à cause de ça):
- par exemple, j'ai ajouté un STDIN_FILENO aux fd lus par le select du client pour pouvoir lire ce qui est tappé au clavier et l'envoyer au serveur (qui le broadcast) ou quitter le programme de façon moins sale qu'avec ctrl+c; et du coup, ça marche de façon complètement aléatoire (surtout pour celui que je lance en second), des fois il lit, des fois pas, et des fois quand je tappes 'q' au clavier et que j'appuie sur entrée (normalement c'est ce qui permet de quitter le programme) les deux programmes sont arrêtés.
- de même des messages qu'un seul client doit recevoir sont reçut par les deux (mais celui qui est créé en second reçoit le message tronqué).
Donc, j'aimerais savoir, d'abord si l'origine du problème est bien celle que je soupçonnes (et pas, par exemple, un énième problème de buffer indétectable) et, le cas échéant, comment contourner le problème.
Merci d'avance de votre attention.
PS: je ne mets pas mpon code parce qu'il est beaucoups trop long, et je ne penses pas que ce soit nécéssaire
PS2: j'ai l'impression que ce problème est apparut quand j'ai créé une structure pour stocker les informations sur les réseaux hébergés par le serveur dans laquelle j'ai mit la structure que j'utilisais déjà auparavant pour stocker les informations sur les clients connecté au réseau, et ce afin de pouvoir gérer plusieurs réseaux sur un même serveur. Mais je ne peux pas en être sûr parce que ça faisait un moment que je testais juste la création d'un nouveau réseau et pas la connection de plusieurs clients, et donc j'ai fait pas mal de modif depuis la dernière fois où plusieurs clients arrivaient à se connecter au serveur.
Partager