recv non bloquant en progra socket (connected) - C - Programmation
Marsh Posté le 10-03-2004 à 17:48:21
Xinoef a écrit : Bonjour, |
select est votre amie.
Marsh Posté le 10-03-2004 à 17:50:44
A moins que ce soit setsockopt ou quelque chose de ce goût-là (je ne me souviens plus du comportement de select et du timeout sur une socket non-bloquante).
Marsh Posté le 10-03-2004 à 18:12:40
J'ai essaye un setsockopt( SOL_SOCKET, SO_RCVLOWAT ) mais ca ne marche pas... Il me recoit toujours des messages de 0 char.
Je vais essayer de voir avec select...
Marsh Posté le 10-03-2004 à 18:33:32
Ca marche pas non plus avec select...
J'avais bon espoir avec setsockopt mais je comprends pas... Meme avec ca ca fouarre...
Marsh Posté le 10-03-2004 à 18:39:03
Heuuu... petit detail :
Je fais ca :
int on=1 ;
if (setsockopt(new_status->intern_socket_rcv, SOL_SOCKET, SO_RCVLOWAT, &on, sizeof(on))<0) {perror("sd with SO_RCVLOWAT" );}
Il me fait ca : "sd with SO_RCVLOWAT: Invalid argument"
???
Marsh Posté le 10-03-2004 à 18:42:35
Xinoef a écrit : Heuuu... petit detail : |
Mais pourquoi faites-vous ça?
Quant à listen, cette fonction permet de savoir s'il y a du data en attente ou si l'on peut écrire sur la socket.
Marsh Posté le 10-03-2004 à 17:44:50
Bonjour,
Voila l'idee : je connecte deux sockets ensemble, d'un cote je fais des send, de l'autre des receive. J'ai plusieur thread qui font des sends sur le meme socket et une thread qui fait son recv. Mon probleme c'est que le receive ne bloque pas : il me signale que je recoit en permanence des messages vides tant qu'il n'y a pas de message entrant. Je ne comprends pas pourquoi car je n'ai pas de client mort comme c'est le cas d'habitude. Vous avez une idee ? Pour l'instant je fait un sleep de 1 seconde avant de verifier s'il y a vraiment un message arrive pour rafraichir. Vous avez d'autres idees ?
Merci
---------------
/* Toblerone is so gooooood 4 U */