Projet de programmation en VC++6.0
hosni
-
turki.hassen Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
turki.hassen Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
Bonjour, je suis un etudient et j ai un projet de programmation d un "sniffer password" sur VC++6.0 je veux savoir svp comment fair un processus qui travaille en arriere plan ou bien 2 processus qui travaillent en meme temps.MERCI
A voir également:
- Projet de programmation en VC++6.0
- Vc runtime - Guide
- Application de programmation - Guide
- Filigrane projet - Guide
- Gant projet - Télécharger - Gestion de projets
- Mettre en veille un programme - Guide
3 réponses
La solution est l'exclusion mutuelle par semaphore. Tu peux synchroniser plusieurs taches en parrallele pour calculer plusieurs taches en meme temps. POur cela, dans les options de compilation de Visual C++, tu choisie "debug Multitreaded". Apres dans le code il faut que t'ulise des semaphores. Par contre si tu c'est pas ce que c'est ou comment ca marche, il faudrait que tu regardes des cours de progs systems. POur t'expliquer par l'exemple (qui vaudra mieu qu'une longue explication) :
#include <conio.h>
#include <iostream>
using namespace std;
#include <mx.h>
#include <time.h>
#pragma comment(lib, "mxdbg.lib")
void affch(char *s)
{
while(*s) _putch(*s++);
}
SEMA s1(0,1);
SEMA s2(0,1);
int *tab;
int nb;
int r1 = 0;
int r2 = 0;
int TACHE P1(int c)
{
for(int i = 0;i < nb/2; i++)
{
r1 += tab[i];
}
s1.signal();
return 0;
}
int TACHE P2(int c)
{
for(int i = nb-1; i >= nb/2; i--)
{
r2 += tab[i];
}
s2.signal();
return 0;
}
int main()
{
char rep = 'o';
while (rep == 'o')
{
cout << "Entrer le nombre de postes ( entre 1 et 900000 ) : ";
cin >> nb;
tab = new int [nb];
srand(time(NULL));
for(int i = 0; i < nb; i++)
tab[i] = rand();
tache(1,P1);
tache(2,P2);
lance(1);
lance(2);
if(nb < 201)
{
cout << "Contenu du vecteur :\n";
for(int j=0; j < nb; j++)
{
if((j%9) == 0) cout << "\n";
cout << tab[j] << "\t";
}
}
s1.wait();
s2.wait();
int resul = r1 + r2;
cout << "\n\n\n" << r1 << " + " << r2 << " = " << resul << endl;
cout << "Recommencer (o/n) ? ";
cin >> rep;
tuetache(1);
tuetache(2);
}
return 0;
}
#include <conio.h>
#include <iostream>
using namespace std;
#include <mx.h>
#include <time.h>
#pragma comment(lib, "mxdbg.lib")
void affch(char *s)
{
while(*s) _putch(*s++);
}
SEMA s1(0,1);
SEMA s2(0,1);
int *tab;
int nb;
int r1 = 0;
int r2 = 0;
int TACHE P1(int c)
{
for(int i = 0;i < nb/2; i++)
{
r1 += tab[i];
}
s1.signal();
return 0;
}
int TACHE P2(int c)
{
for(int i = nb-1; i >= nb/2; i--)
{
r2 += tab[i];
}
s2.signal();
return 0;
}
int main()
{
char rep = 'o';
while (rep == 'o')
{
cout << "Entrer le nombre de postes ( entre 1 et 900000 ) : ";
cin >> nb;
tab = new int [nb];
srand(time(NULL));
for(int i = 0; i < nb; i++)
tab[i] = rand();
tache(1,P1);
tache(2,P2);
lance(1);
lance(2);
if(nb < 201)
{
cout << "Contenu du vecteur :\n";
for(int j=0; j < nb; j++)
{
if((j%9) == 0) cout << "\n";
cout << tab[j] << "\t";
}
}
s1.wait();
s2.wait();
int resul = r1 + r2;
cout << "\n\n\n" << r1 << " + " << r2 << " = " << resul << endl;
cout << "Recommencer (o/n) ? ";
cin >> rep;
tuetache(1);
tuetache(2);
}
return 0;
}
POur ce prog, j'ai utiliser comme tu peux le voir une bibliotheque qui s'appelle MX et qui gere les semaphores.
Ce programme calcule la somme des données d'un tableau. La tache 1 parcours de gauche a droite, et la 2 inversement.
Une derniere chose, la syncro de plusieurs tache n'a d'interret que si tu possedes 2 proces ou un P4 Multithreaded !!!!
Ce programme calcule la somme des données d'un tableau. La tache 1 parcours de gauche a droite, et la 2 inversement.
Une derniere chose, la syncro de plusieurs tache n'a d'interret que si tu possedes 2 proces ou un P4 Multithreaded !!!!