2010-11-27 26 views
-1

Désolé, ma question est triviale. J'utilise select() dans mon programme serveur pour rechercher de nouvelles connexions ainsi que pour les données sur les connexions existantes. Cependant, lorsque je reçois des données sur une connexion/socket, mon programme lit les données et les stocke dans un tableau. Ici, le serveur ne répondra pas au client [même si le client est en mode recv()]. Maintenant, quand le serveur retourne à l'appel de select(), il se bloque là. Pas certain de pourquoi. Mon intention est que le serveur devrait sortir de select [s'il n'y a pas de données]. J'ai gardé le timeout sur le select() aussi."select" dans la prise C

Toute suggestion à cet égard serait d'une grande aide.

+3

Est-ce que vous ré-initialisez 'fd_set' à chaque fois dans votre boucle de sélection = – nos

+0

Non. Est-ce nécessaire? –

+2

Oui. Après le retour de 'select', les seuls membres de' fd_set' seront ceux qui étaient prêts. C'est ainsi que 'select' vous indique ce qui était prêt. –

Répondre

-1

Je l'ai résolu. Il semble que le délai d'attente ne fonctionnait pas bien plus tôt. Je l'ai réparé. Cela fonctionne bien maintenant. Merci à tous. Si j'ai des doutes, je vous répondrai tous.

+0

peut-être que vous pourriez marquer cette réponse comme "acceptée", donc la question ne continue pas à apparaître comme sans réponse. Bravo :-) – Lee

+0

Oui Lee .. Mais quand je l'ai choisi comme "accepté", il est dit, vous pouvez accepter votre propre réponse seulement après 2 jours. Donc, le fera, après 2 jours. –