Socket

hiccup Messages postés 8 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 28 novembre 2005 - 30 janv. 2005 à 15:41
simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006 - 31 janv. 2005 à 12:46
Bonjour tout le monde

Pour m'initier à la programmation réseau, j'ai voulu programmer un
logiciel simple permettant à deux utilisateurs possédant chacun son
ordinateur de communiquer. J'ai lu beaucoup de tutoriaux à propos des
sockets. Le seul probleme c'est que lorsque je souhaite savoir si mon
correspondant m'a envoyé un message, j'execute l'instruction rcv(),
mais alors tant que celui-ci ne m'a pas écrit, je ne peux pas taper mon
propre message. Le programme est bloqué jusqu'à ce que un paquet
arrive. Y a-t-il un moyen pour contourner ce problème ?

6 réponses

thanos57 Messages postés 14 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 18 mars 2005
30 janv. 2005 à 16:23
essaye en utilisant les threads
0
simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006
30 janv. 2005 à 16:27
Tu travaille avec quel OS...



Si c'est Windows, tu peux créer 2 threads : 1 pr écrire, 1 pr lire.

Pour les autres systèmes, je sais pas
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
30 janv. 2005 à 19:54
Yep,
Mieux que les threads, utilise les sockets asynchrones.
Regarde dans mes sources, tu trouveras un exemple d'application client/serveur avec des sockets non bloquantes.

Tu verras c'est meme plus simple et plus gérable.

Shell
0
hiccup Messages postés 8 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 28 novembre 2005
30 janv. 2005 à 21:08
Merci de vos réponses



DeAtHCrAsH je suis en train de lire ton programme
utilisant les sockets asynchrones. Mais sinon, pour ma culture, c'est
quoi les threads (je travaille effectivement sous windows) ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
30 janv. 2005 à 22:20
Les threads, sont des temps processeurs.
Par exemple si un programme a besoin de lire et d'écrire en "meme temps".
Il va alors diminuer et séquencer les temps nécéssaires pour chaque tache.

Par exemple si les deux taches dure 10 secondes chacune, le processeur va diviser chacune d'entre elle en séquence d'une seconde.
Puis il va les organiser de maniere à executer la premiere tache pendant une seconde, puis ensuite la deuxieme tache pendant une seconde, puis de nouveau la premiere tache pendant une seconde, ..., et ainsi de suite jusqu'a que chacune des taches soit arriver à 10 secondes (ce qui est le temps totale pour effectuer chacune de nos taches).

En gros, le programme va répartir les temps de traitement entre les différentes taches.
Tu auras ainsi l'impression que tout s'execute en meme temps, alors qu'en fait les taches s'execute les unes après les autres mais avec de petits laps de temps.

Voila, je sais pas si j'ai été assez claire mais en gros ca résume les threads.

Shell
0
simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006
31 janv. 2005 à 12:46
Je pense que c'est assez clair...



Comme l'a dit deathcrash, si tu executes 2 fonctions "en même temps"
par les threads, le processeur va executer un certain nombre
d'opérations de la première et de la deuxième fonction par alternance.



Les threads sont surtout utilisés pour les annulations de gorsses
opérations (exemple : une boucle pour compter de 1 à 200000, sur un
ordi "lent", tu crées la boucle de calcul dans un thread, et un bouton
annuler, dans la fenêtre principale, qui te permettra de stopper la
boucle)
0
Rejoignez-nous