begin process at 2010 02 10 13:10:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Threads + Reseau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Threads + Reseau

vendredi 7 octobre 2005 à 15:14:59 | Threads + Reseau

Zootella

Salut

Voila j'ai fait une passerelle reseau, elle connecte les clients aux serveurs qu'ils veulent.

Tout marche bien, mais le programme utilise 99% du processeur d'aprés le gestionnaire des tâches, logique puisqu'il y'a une boucle while infinie qui verifie si un client tente de de connecter ou si un client/serveur envoie un message.

Donc c'est là que les threads rentrent en actions

Mais de quelle maniére les créer ?

Faut-il en créer juste un, qui  lui va lancer la boucle while.
Faut-il créer un thread pour chaque client/serveur, donc chaque socket dans un thread.
Faut-il mettre le socket qui bind dans un thread.

Pas facile... le premier cas ne change rien : 99% du processeur

Donc d'aprés vous, quelle est la meilleur solution, y'a t'il d'autres solutions ?

Merci




vendredi 7 octobre 2005 à 15:19:52 | Re : Threads + Reseau

gamemonde

Membre Club
le premier c'est pour pouvoir toujours envoyer recevoir un message.
le deuxieme n'est pas bon vraiment car tu vas te retrouver avec trop de thread
le but est les thread, mais pour utilise select
regarde sur msnd
vendredi 7 octobre 2005 à 21:22:14 | Re : Threads + Reseau

aardman

Membre Club
Salut,
Les threads c'est la solution immediate aux problemes de sockets bloquants, mais tu peux aussi utiliser les sockets non bloquants.
samedi 8 octobre 2005 à 01:16:18 | Re : Threads + Reseau

Zootella

Je n'utilise pas de socket bloquant, mais le processeur est utiliser à 99%, donc comment
remédier à ça proprement > sans utiliser sleep().

samedi 8 octobre 2005 à 09:43:18 | Re : Threads + Reseau

victorcoasne

Membre Club
Bonjour,

Très simplement en utilisant les bloquants. J'explique :
Tu lance la fonction qui connecte le client, intercepte et traite ses messages mais dans cette fonction dès que le client s'est connecté tu lui demande de relancer cette fonction en thread ainsi il peut connecter un autre client tout en interceptant et en taitant à l'identique les messages !

Merci,

Le créateur du site http://victorlogiciels.com
samedi 8 octobre 2005 à 14:57:18 | Re : Threads + Reseau

Zootella

Salut victorcoasne,

Effectivement avec des sockets bloquants, le processeur est à 0%.

Ta solution me paraît être la bonne

Mais quand tu dis :

"Tu lance la fonction qui connecte le client, intercepte et traite ses messages mais dans cette fonction dès que le client s'est connecté tu lui demande de relancer cette fonction en thread".

J'ai bien compris le principe, mais quelle fonction faut-il lancer dans le thread ?








samedi 8 octobre 2005 à 18:10:12 | Re : Threads + Reseau

Zootella

Je dois ajouter WaitForSingleObject(...) après la creation du thread pour que ça "fonctionne" sinon mon thread reçois de mauvais données... aussi les socket sont toujours bloqués.


samedi 8 octobre 2005 à 22:18:57 | Re : Threads + Reseau

victorcoasne

Membre Club
Bonjour,

Une règle d'or c'est d'utiliser une déclaration de variable différente pour chaque connexion et de le faire en thread avec une fonction bloquante.

Caractéristique d'un thread:
Son prototype de fonction :
DWORD WINAPI lafonction(LPVOID parametre);

Son appel :
DWORD dword;
CreateThread(0,0,lafonction,(LPVOID)parametre,0,&dword);

Merci,

Le créateur du site http://victorlogiciels.com
samedi 2 mai 2009 à 21:43:00 | Re : Threads + Reseau

younadim

qu'est ce que savedire des sockets bloquants donnee des documentation
merci

 

dimanche 3 mai 2009 à 13:54:30 | Re : Threads + Reseau

victorcoasne

Membre Club
Bonjour,

Les sockets sont une librairie de gestion réseau.

Bloquante c'est à dire synchrone, ça veut dire que la fonction bloque le thread (ou le programme si il n'a qu'un thread) durant la réception ou l'envoi des données.

Pour avoir des informations sur son mode de fonctionnement voir mes sources.
Je te donne quand même le lien : http://www.cppfrance.com/codes/ENVOI-RECEPTION-FICHIERS-CLIENT-SERVEUR-DEV-CPLUSPLUS_41921.aspx

Merci et bonne prog,
@++

Victor


Cette discussion est classée dans : créer, reseau, client, thread, threads


Répondre à ce message

Sujets en rapport avec ce message

Reseau + Threads [ par bat67000 ] Salut, je fais une app de discution, le coté Client communique grace a une socket, qu'il a comme variable membre, avec l'app Server.Maintenant j'aimer question sur les threads [ par mrous ] Bonjour,je dois réaliser une fonction pour communiquer avec un composant USB.Pour cela, je pense créer un thread en priorité haute en utilisant AfxBeg Threads et leurs paramètres [ par Chop_chop ] Bonjour, j'ai un problème quant à un programme avec création de threads que je réalise.Je vous explique ce que je code et qui ne fonctionne pas :J'ai Economise le temps machine [ par maddoc2 ] Bonsoir,Je suis en train de développer une application sous Windows dans laquelle des données à collecter ont deux origines possibles. Chaque origine créer un thread [ par nougasplou29 ] J'ai un programme avec une capture webcam qui marche en arrière-plan (juste caché la fenêtre) et la capture pompe pas mal sur le système (apparition d Thread, Client/Serveur VC++.Net et avec WinForms ( pas d'MFC ) [ par lacousine ] Bonjour,j'ai développé un serveur qui accept plusieurs clients avec des sockets. Voici mes problèmes: lorsque je veux mettre fin à mon serveur et qu'i variable partagé [ par enrageur ] bonjourDans mon programme, j'ai deux threads. Dans un thread des threads je met à jour régulierement une variable, et dans l'autre je viens lire cette Fonction de Thread sous win 98 [ par deck_bsd ] Yop à tous,Dans un application qui devrait tourner sous win98 SE , j'ai besoin de créer un thread. Histoire d'être sur que cela fonctionne, j'ai été v Synchronisation de threads [ par deck_bsd ] Yop à tous,Voila j'ai un prog avec un serveur multi thread et tous ces threads doivent tous modifier ou consulter une listebox dans le programme princ Envoie à des threads [ par mohdaef ] Bonjour à tous.Je m'adresse à vous car j'ai un problème avec des threads et plus précisément avec le passage d'informations a partir d'un thread vers


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales