[C]Utiliser des fonctions de saisi (stdin) non bloquantent, possible?

Utiliser des fonctions de saisi (stdin) non bloquantent, possible? [C] - C - Programmation

Marsh Posté le 22-10-2006 à 16:05:44    

salut  :hello:  
 
j'aimerai savoir s'il existe en C des fonction de saisi non bloquant , pour pouvoir résoudre un probléme avec un programme client serveur qui utilise les sockets .
 
Merci.
 

Reply

Marsh Posté le 22-10-2006 à 16:05:44   

Reply

Marsh Posté le 22-10-2006 à 17:37:36    

c'est quoi ton probleme avec les sockets ?


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 22-10-2006 à 17:54:54    

Il fait une appli utilisant les sockets et il voudrait utiliser les fonctions qui ne "bloquent" pas le prog pour pouvoir faire en paralelle une boucle pour afficher les messages reçus. ( enfin... je crois :) )

Reply

Marsh Posté le 22-10-2006 à 18:19:23    

big_dadi_fat a écrit :

j'aimerai savoir s'il existe en C des fonction de saisi non bloquant , pour pouvoir résoudre un probléme avec un programme client serveur qui utilise les sockets .


Utilise les threads. On a jamais besoin de fonctions non blocantes. Au contraire...
 
Maintenant, tu comprends pourquoi les I/O sont blocants...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 22-10-2006 à 19:05:53    

Et si on fait une appli console, on fait comment ? ( un truc truc un peu comme telnet... )

Reply

Marsh Posté le 22-10-2006 à 19:26:00    

Ridjidji a écrit :

Et si on fait une appli console, on fait comment ? ( un truc truc un peu comme telnet... )

Les threads, ça fonctionne dans les modes console ou GUI, peu importe...
 
http://mapage.noos.fr/emdel/pthreads.htm


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 22-10-2006 à 19:46:23    

Je ne dis pas que les threads ne marchent pas en console... Disons juste que j'aurais besoin de connaître une fonction d'entrée non blocante  ;)

Reply

Marsh Posté le 22-10-2006 à 20:04:48    

Ridjidji a écrit :

Je ne dis pas que les threads ne marchent pas en console... Disons juste que j'aurais besoin de connaître une fonction d'entrée non blocante  ;)


T'es lourd, je te dis qu'il n'y en a pas sur stdin en C standard.
 
Certains systèmes permettent néanmoins un config non blocante (rarement utile, programmation de chacal...) Quel est ton système ?


Message édité par Emmanuel Delahaye le 22-10-2006 à 20:07:31

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 23-10-2006 à 11:55:05    

Citation :

c'est quoi ton probleme avec les sockets ?


Ridjidji a écrit :

Il fait une appli utilisant les sockets et il voudrait utiliser les fonctions qui ne "bloquent" pas le prog pour pouvoir faire en paralelle une boucle pour afficher les messages reçus. ( enfin... je crois :) )


oui oui, c'est exactement ça.
en fait je veux j'ai fet en consol une aplication client/serveur qui utilise des socket non bloquant, pour permetre au clien (par exemple) d'envoyer des message au serveur sans ce préocupé de la reponce du serveur c'est envoyer 1, 2, 3 , 4, ou plusieur message de suite.   (est c'est la méme chose pour le serveur).
 
Mais quand le serveur reçoi la les message du client, il ne les affiche pas tout de suit car il attend lui aussi un saisi sur stdin (donc il ne lé affiche qu'apré avoir fait la saisi), et c'est idem quant c'est le serveur qui envoi au client...
 
Donc je voulez savoir s'il étai possible d'utilisé un fonction de saisi non bloquant pour: s'il n y pas de saisi sur le serveur il affiche les message reçu par le cient systematiquement...  voilà.
 
Je suis sous windows.
 

Citation :

Les threads, ça fonctionne ....
http://mapage.noos.fr/emdel/pthreads.htm


c'est les méme fonctions, sous windows ?

Message cité 1 fois
Message édité par big_dadi_fat le 23-10-2006 à 12:16:26
Reply

Marsh Posté le 23-10-2006 à 12:06:24    

big_dadi_fat a écrit :


Citation :

Les threads, ça fonctionne ....
http://mapage.noos.fr/emdel/pthreads.htm


c'est les méme fonctions, sous windows ?


 
Celles ci sont standards.


---------------
Töp of the plöp
Reply

Marsh Posté le 23-10-2006 à 12:06:24   

Reply

Marsh Posté le 23-10-2006 à 12:15:47    

_darkalt3_ a écrit :

Celles ci sont standards.


ah ok, merci.

Reply

Marsh Posté le 23-10-2006 à 13:10:47    

_darkalt3_ a écrit :

Celles ci sont standards.


Enfin, standard POSIX.1. Mais oui, on les trouve sous Windows et unixoides...
 (sur le site de Red Hat, si je me souviens bien...)


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 23-10-2006 à 13:17:06    

et select, ca suffirait pas dans ce cas ?

Reply

Marsh Posté le 23-10-2006 à 13:49:55    

lorill a écrit :

et select, ca suffirait pas dans ce cas ?


bah montre un peut comment on peut l'utilisé pour résoudre le prob, j'ai déja essayer mais je n'arrive pas...

Reply

Marsh Posté le 23-10-2006 à 17:44:06    

big_dadi_fat a écrit :

bah montre un peut comment on peut l'utilisé pour résoudre le prob, j'ai déja essayer mais je n'arrive pas...


Sous Windows, non, pas pour stdin.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 23-10-2006 à 17:48:57    

Moi, à l'iut, j'avais un super truc, pour saisir des caractère de manière non-bloquante [:dawak] Fallait faire :

char c;
while(!kbhit())) {
  c = getch();
}


Ou un truc comme ça [:dawak] Et dans ce cas, getch prenait dans le buffer clavier si c'était dispo. Je sais pas pourquoi, mais ça m'a pas l'air standard [:johneh]

Reply

Marsh Posté le 23-10-2006 à 17:53:10    

FlorentG a écrit :

Moi, à l'iut, j'avais un super truc, pour saisir des caractère de manière non-bloquante [:dawak] Fallait faire :

char c;
while(!kbhit())) {
  c = getch();
}


Ou un truc comme ça [:dawak] Et dans ce cas, getch prenait dans le buffer clavier si c'était dispo. Je sais pas pourquoi, mais ça m'a pas l'air standard [:johneh]


C'est non seulement non standard (conio est une invention de Borland), mais en plus complètement antisocial, car ça prend 100% du CPU. Seules les interruptions fonctionnent...
 
A bannir dans une application sérieuse.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 23-10-2006 à 17:57:43    

Emmanuel Delahaye a écrit :

C'est non seulement non standard (conio est une invention de Borland), mais en plus complètement antisocial, car ça prend 100% du CPU. Seules les interruptions fonctionnent...
 
A bannir dans une application sérieuse.


Hahaha ouais, la réception des données se faisait justement par interruption... C'était pour un projet de fin d'année, j'était jeune, insouciant...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed