bonjour,
quelle sont les différentes actions envisageable pour creer un serveur udp pouvant gérer plusieurs client..
Merci
bonjour,
quelle sont les différentes actions envisageable pour creer un serveur udp pouvant gérer plusieurs client..
Merci
Comme je le disais dans ton topic precedent ...
il faut que tu utilises un nouveau thread quand un client ce connect et que tu delègue la gestion du client a se thread comme cela ton serveur peut se remettre en ecoute et ainsi prendre en charge un nouveau client que tu traitera de maniere similaire.
Si tu veux eviter de trop t'aracher les cheveux avec la gestion de thread, tu peux t'apuyer sur la class executor qui permet de creer un pool fini de thread et qui s'occupe de dispatcher les tache au thread.
++
merci pour cette réponse.
En fait, j'ai déjà un pool de thread qui gère les traitements une fois le paquet reçu afin de pouvoir se remettre en écoute..
Seulement, je n'arrive pas à m'en sortir si dans ce "traitement", il y a une écoute spécifique à faire..
En gros, comment écouter un paquet spécifique due au traitement, tout en continuant d'écouter tout le reste.
dans ce cas precis il te faut un thread de managment global situé entre le serveur et les client qui receptionne l'ensemble des paquets et qui fasse le trie au moment de la reception du paquet avant de creer un nouveau thread pour le client. si jamais le paquet est un paquet attendu par un thread existant tu le transmet au thread qui l'attend sinon tu creer un nouveau thread de managment pour un nouveau client ...
++
Tu veux dire que dans la thread de traitement, il faut faire qq'chose qui "attend" (mais pas un socket.receive()).
Et que la thread qui recoit tout les paquets puisse envoyer le paquet à la thread qui "attend" ?
c'est cela je ferai un thread intermediaire dans lequel passe l'ensembel de tes paquet mais c sur pas un socket.receive() juste une espece de fifo qui lit chaque paquet et qui soit l'oriente correctement soit creer un nouveau thread client si c necessaire ...
ok, mais comment communiquer entre les deux threads ? J'pense pas faire des pipes![]()
ba ecoute si tu veux pas faire de pipe il qaut que tu conserve une liste de thread existant et que tu creer une méthode dans le thread qui permet de lui passer des donnés... un truc du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 MonThread1.CheckPacket(Data);
Est ce que je pourrais pas mettre dans le thread qui gère tous les receive, une sorte de bureau de poste, qui serait un hashMap, où pour chaque thread en clé il y a une liste de message en attente.
Le thread traitement irait chercher dans sa liste de messages en attente les paquets qui lui sont destinés..
?
Tu peux aussi faire cela dans ce sens a voir je n'ai pas procedé comme cela mais l'idée ne semble pas mauvaise non plus ...
Et si je fais une pseudo-connexion le temps de recevoir les infos, est ce que le receive suivant dans le thread principal recevra les messages arrivés pendant la pseudo-connexion ?
attention on parle d'aiguillage de paquet pas de pseudo connexion...
Partager