Bonjour,
J'ai reçu un devoir dont vous pouvez avoir l'énnoncé ici.
Tout d'abord, pour créer un serveur pouvant gérer plusieurs clients je me suis dirigé vers l'idée d'un serveur multi-thread, j'ai vu qu'il y avait aussi une solution consistant à utiliser des sockets asynchrones mais j'ai pas trouvé beaucoup d'info là dessus et ça me semble assez compliqué.
Donc après avoir décider de faire un serveur multithread, j'ai donc fait des recherche là dessus et j'ai trouvé cet exemple donné dans vos tutaux, je comprend à peu près tout mais j'aurais tout de même besoin d'éclaircissements:
Tout d'abord les fonctions utilisés là ont-elles le même nom sous linux? Car pour que le programme soit éxécutable sous windows et linux je compte faire un en tête du style:
(Pour le moment j'ai mis ces bibliothèques pour linux car il semblerait que ce soit les "classiques" pour l'utilisation de sockets)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #if defined (WIN32) #include <winsock2.h> #elif defined (linux) #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h>
Ensuite le passage du code que je n'ai pas bien compris est:
En réalité au final je ne comprend pas bien quelles information contient le socket utilisé par la fonction "ClientThread", je suppose que c'est le socket correspondand au client mais ensuite je ne comprend pas bien comment faire que chaque thread gère son client, et surtout comment le serveur fait pour envoyer un message à tout les clients. Donc un peu d'aide ne serait pas de trop (je trouve que pour notre niveau le prof nous demande vraiment un truc très difficile, surtout qu'on a qu'un mois pour faire ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 static DWORD WINAPI ThreadLauncher(void *p){ struct thread_param *Obj = reinterpret_cast<struct thread_param*>(p); serveur *s = Obj->ser; return s->ClientThread(Obj->soc); }).
Merci d'avances pour vos résponses, explications ou conseils.
Partager