Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2849 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Select et send

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Select et send

n°751123
Bobarctor
Posté le 03-06-2004 à 17:14:02  profilanswer
 

Bonjour,
 
J'ai encore un petit soucis avec select() enfin c'est plutot un improvement :)
 
Je bosse sur une appli serveur avec reception/envois de messages tcp.
Je fais des read non bloquants mais j'aimerais faire aussi des send non bloquants.
 
Je ne comprend pas comment c'est possible avec select() donc si quelqu'un a un bout de code avec un send non bloquant avec un select, je suis preneur.
 
Merci

mood
Publicité
Posté le 03-06-2004 à 17:14:02  profilanswer
 

n°751133
torpe23
Posté le 03-06-2004 à 17:21:54  profilanswer
 

select(), c'est pour attendre, donc je ne pense pas que ça soit ton cas.
Par contre, si tu fais man send, tu auras des infos intéressantes. Genre, utiliser write() au lieu de send() avec un flag spécial!

n°751138
Bobarctor
Posté le 03-06-2004 à 17:26:08  profilanswer
 

oui mais select() c'est aussi pour voir si un descripteur est pret en lecture/ecriture... c'est aussi pour rendre un programme non bloquant.
 
Justement le man de send est explicite a ce sujet en indiquant que send() peut bloquer si la stack ip de l'appli en face est surcharge, blocage qui survient si cette stack est surchargee.
 
Il y a bien la solution qui permet de creer cette socket en mode non bloquant, mais le truc c'est que mon programme doit etre portable et que cette soluce ne l'est pas.

n°751882
docmaboul
Posté le 04-06-2004 à 07:17:11  profilanswer
 

Bobarctor a écrit :

oui mais select() c'est aussi pour voir si un descripteur est pret en lecture/ecriture... c'est aussi pour rendre un programme non bloquant.
 
Justement le man de send est explicite a ce sujet en indiquant que send() peut bloquer si la stack ip de l'appli en face est surcharge, blocage qui survient si cette stack est surchargee.
 
Il y a bien la solution qui permet de creer cette socket en mode non bloquant, mais le truc c'est que mon programme doit etre portable et que cette soluce ne l'est pas.


 
Il n'y a pas de solution totalement portable et vous serez probablement obligé d'utiliser des bons gros #ifdef. Sinon, à votre place, j'utiliserai ioctl (sous unix) et ioctlsocket (sous win32) pour passer la socket en mode non-bloquant.

n°751941
Bobarctor
Posté le 04-06-2004 à 08:45:24  profilanswer
 

En fait en sondant un peu tout le monde autour de moi on m'a conseillé d'utiliser les deux methodes:
 
- creer une socket non bloquante avec O_NONBLOCK
- multiplexer l'envois de paquets avec send.
 
Maintenant je pense que ça peut être pose sur papier comme suit:
 
- le descripteur sur lequel on veut envoyer quelque chose est mis et reste dans la pile de fd_set a examiner si et seulement si une partie du message n'a pu être transmise correctement, sinon on l'enleve de la pile.
 
Mon problème majeur c'est que je ne sais pas le coder d'où ma demande d'exemple :)
 
Bye


Message édité par Bobarctor le 04-06-2004 à 11:05:12

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Select et send

 

Sujets relatifs
[C] Select et timer[ HTML] - afficher date du jour dans menu de type "select"
demande d'info sur <html:select .....Probleme de select()
Nombre de ligne d'une requète Select en ODBCProbleme avec un select
[SQL] Comment modifier les données d'un SELECT ???problème de select ..... if then else .... (je ne comprend pas!!!!! )
[SQL] Select ... IN 
Plus de sujets relatifs à : [C] Select et send


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR