Socket en C, lancer le serveur sur 2 ports - C - Programmation
Marsh Posté le 05-06-2005 à 12:44:06
bah tu peux mettre simplement un interrupteur qui change de sens à chaque boucle. En fonction de celui-ci tu choisis de faire un accept sur l'une ou l'autre socket. MAIS étant donné que accept est bloquant cela va poser des problèmes. Si tu attends sur une socket et que y'a personne et bah meme si y'a qqun sur l'autre et bah il l'aura dans le baba
Marsh Posté le 05-06-2005 à 15:40:06
bb007 a écrit : Je viens de créer un petit serveur http gérant les requetes GET et POST. |
select() est ton ami.
Marsh Posté le 05-06-2005 à 15:40:37
cricri_ a écrit : faire une boucle avec 2 select non-bloquant |
Pourquoi ? 1 seul select() bloquant suffit. Le premier parametre de select, c'est pas un fd. C'est le numero de fd max...
Marsh Posté le 05-06-2005 à 15:43:18
fafounet a écrit : bah tu peux mettre simplement un interrupteur qui change de sens à chaque boucle. En fonction de celui-ci tu choisis de faire un accept sur l'une ou l'autre socket. MAIS étant donné que accept est bloquant cela va poser des problèmes. Si tu attends sur une socket et que y'a personne et bah meme si y'a qqun sur l'autre et bah il l'aura dans le baba |
Mais non accept() n'est pas bloquant. C'est de la config. On appelle accept() autant de fois que nécessaire pour préciser les ports entrants autorisés, et ensuite, on fait une boucle classique avec select().
|
Marsh Posté le 05-06-2005 à 19:29:08
Emmanuel Delahaye a écrit : Pourquoi ? 1 seul select() bloquant suffit. Le premier parametre de select, c'est pas un fd. C'est le numero de fd max... |
Oups !! exact Maître Emmanuel ...
Marsh Posté le 10-06-2005 à 09:57:21
Emmanuel Delahaye a écrit : Mais non accept() n'est pas bloquant. C'est de la config. On appelle accept() autant de fois que nécessaire pour préciser les ports entrants autorisés, et ensuite, on fait une boucle classique avec select().
|
Tu dois confondre avec listen() non ?
Marsh Posté le 05-06-2005 à 12:36:20
Bonjour,
Je viens de créer un petit serveur http gérant les requetes GET et POST.
J'aimerais maintenant lancer ce serveur sur 2 ports à la fois. genre 4444 et 4445
Dans mon while j'ai un ns=accept(sd,(struct sockaddr*)&clientaddr, &sasize);
sd étant mon socket, si je créé un autre socket sur un autre port comment peut on gérer le accept() avec les 2 sockets.