programme serveur multitâches - C++ - Programmation
Marsh Posté le 15-06-2006 à 16:35:47
cette phrase ne veut rien dire, c'est normal, c'est la ...
Marsh Posté le 15-06-2006 à 16:38:01
Voici ce que je voudrais que le programme fasse par exemple:
Boucle infinie
La connexion est toujours acceptée sur le port X
On lance un nouveau programme serveur par le biais de fork()
Si lon est dans le programme serveur fils (i-e fork() a retourné 0)
Alors
On ferme le socket qui était en attente de connexion
On ouvre la connexion en direction du vrai serveur
Boucle infinie
On attend une trame du vrai client
Si erreur de lecture
On fait un exit(0) pour terminer.
On la transmet à lautre serveur
Si erreur décriture
On fait un exit(0) pour terminer.
Marsh Posté le 15-06-2006 à 20:26:18
bah tu comme tu l'as écrit toi même, tu forkes.... il est ou le probleme ?
Marsh Posté le 16-06-2006 à 11:17:28
Ben t'as une idée de ton algo ... je vois pas ce qu'il te faut de plus, à part s'y mettre .
Marsh Posté le 16-06-2006 à 15:08:24
_darkalt3_ a écrit : Ben t'as une idée de ton algo ... je vois pas ce qu'il te faut de plus, à part s'y mettre . |
Voici mon algo et l'erreur à la compilation:
Code :
|
Marsh Posté le 16-06-2006 à 15:20:10
Je crois que c'est au niveau de la création du thread, la déclaration du troisième paramètre. Mais je ne sais que faire
Marsh Posté le 16-06-2006 à 15:43:34
ReplyMarsh Posté le 19-06-2006 à 09:50:56
Salut darkalt3,
Serait-ce ceci?
Code :
|
Maintenant il me dit des erreurs du type parse error.
Merci de voir avec moi.
Marsh Posté le 19-06-2006 à 13:39:53
les fonctions que tu fais pointer par ton thread doivent être statics, et avoir un pointeur sur void en paramètre, donc avoir le prototype style
static void* mafonctionthreadee(void* iParam);
Marsh Posté le 19-06-2006 à 14:07:28
Mais si je veux que ma fonction soit de ce type:
int ma_fonction(param1,parm2...)?
Que dois-je faire dans ce cas?
Merci
Marsh Posté le 19-06-2006 à 14:11:35
te renseigner, chercher des tutoriels, des exemples, lire de la doc...
éventuellement passer des pointeurs sur objet ... en faisant attention ...
Marsh Posté le 19-06-2006 à 14:14:06
j'oublie le plus important: si tu es sous windows, utilises plutot les thread mfc. Les fonctions que tu utilises sont plutôt orientées C, pas C++.
Marsh Posté le 22-06-2006 à 11:31:29
J'ai finalement trouvé la solution,
d'une part, j'ai regroupé mes deux fonctions en une seule fonction à laquelle je passe mon argument en faisant char *argu=(char *)arg, avec arg l'élélment void* arg passé à ma fonction. Ensuite j'ai enlevé la classe.
J'ai aussi supprimé le mutex car il ne me sert à rien dans ce cas.
Merci
Marsh Posté le 15-06-2006 à 16:15:08
Bonjour,
Quelqu'un aurait il un programme pour rendre un serveur multitâches?
Merci