Utiliser des fonctions de saisi (stdin) non bloquantent, possible? [C] - C - Programmation
Marsh Posté le 22-10-2006 à 17:37:36
c'est quoi ton probleme avec les sockets ?
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 )
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...
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... )
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
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
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 ?
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 .... |
c'est les méme fonctions, sous windows ?
Marsh Posté le 23-10-2006 à 12:06:24
big_dadi_fat a écrit :
|
Celles ci sont standards.
Marsh Posté le 23-10-2006 à 12:15:47
ReplyMarsh 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...)
Marsh Posté le 23-10-2006 à 13:17:06
ReplyMarsh 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...
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.
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 Fallait faire :
char c; |
Ou un truc comme ça 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
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 Fallait faire :
|
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.
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... |
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...
Marsh Posté le 22-10-2006 à 16:05:44
salut
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.