Client/serveur utilisant les iocp réalisé avec borland builder 2007

Soyez le premier à donner votre avis sur cette source.

Vue 6 796 fois - Téléchargée 826 fois

Description

présentation :
Le zip est composé de deux programmes distincts.
-un programme client qui permet de se connecter au serveur afin d'échanger des fichiers et de dialoguer avec les autres clients connectés au serveur.
-un programme serveur qui gèrent les clients et leur permet d'interagir entre eux.
méthode :
le mécanisme utilisé pour manipuler les sockets est le concept IOCP de windows, mécanisme très puissant et performant qui permet de traiter plusieurs client en même temps avec une poignées de
threads.d'une part ce mécanisme est plus performant que select, WSAAsyncselect et WSAEventselect de l'autre il est plus compliqué à mettre en place que ces derniers. une fois que l'on connait les différentes étapes pour mettre en place le mécanisme et les quelques cas de figures qui peuvent se présenter, bien la réalisation d'une application autour de ce concept n'est pas plus compliqué que l'utilisation de select() etc...

il se pourrait que vous rencontrez des souci à l'inclusion de <shlobj.h> ds ce cas il faudra changer shlobj.h et shlobj.h comme cela:
shobjidl :
  • Commenter les lignes 2189 à 2193
  • Commenter les lignes 8085 à 8095


shlobj.h :
  • Modifier la ligne 1422 en } *LPFVSHOWINFO;
  • Modifier la ligne 3457 en } *LPSHELLFLAGSTATE;


pour l'utiliser sur le net penser à ouvrir le port que vous auriez choisi sur le modem adsl.

Conclusion :


Le code n'est pas commenté mais cependant je reste à votre disposition pour toutes questions, suggestions ou bugs

Codes Sources

Ajouter un commentaire Commentaires
Messages postés
7
Date d'inscription
jeudi 24 février 2011
Statut
Membre
Dernière intervention
17 mai 2011

salut ,
code tres interessant mais j'aimerais bien que tu nous explique mieux le role de chaque class avec si possible un shéma présentant les héritages histoire de mieux voir el code
merciiii
Messages postés
5
Date d'inscription
lundi 3 février 2003
Statut
Membre
Dernière intervention
15 avril 2010

voila j'ai réussi à faire sa :

screen :
http://img188.imageshack.us/img188/8867/rghv.png

void __fastcall TListeDossiers::Button3Click(TObject *Sender)
{
WIN32_FIND_DATA File;
HANDLE liste;
//liste des disque dur
AnsiString Driver = DCB->Drive;
AnsiString Chemin = Driver+":\\*" ;
ShowMessage(Chemin);
//AnsiString Taille =(File.nFileSizeHigh*MAXDWORD+File.nFileSizeLow)/1024;

liste = FindFirstFile(Chemin.c_str(),&File);
VueFichierClient->Clear();

do
{
if(File.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // ==> Repertoire
{
TListItem*pitem;
pitem=VueFichierClient->Items->Add();
pitem->Caption = File.cFileName;

}
else // ==> Fichier
{
}
} while((FindNextFile(liste, &File)));
FindClose(liste);

}
Messages postés
5
Date d'inscription
lundi 3 février 2003
Statut
Membre
Dernière intervention
15 avril 2010

Merci j'ai réussi à récupérer les petit icones

if(OpenDialog1->Execute())
{
//chemin du fichier + extension
CheminFichier->Text=OpenDialog1->FileName; //CheminFichier est un Edit
//Nom du fichier + ext
AnsiString NomFichier = ExtractFileName(CheminFichier->Text);

TListItem*pitem;
pitem=VueFichierClient->Items->Add(); //VueFichierClient est un ListView
pitem->Caption=NomFichier;
pitem->ImageIndex =DossierClient->GetIconIndex(CheminFichier->Text.c_str());
pitem->SubItems->Add(ExtractFileExt(CheminFichier->Text));

}

Il me reste plus qu'a afficher le contenu du répertoire avec tout les fichier.
Messages postés
29
Date d'inscription
samedi 1 décembre 2007
Statut
Membre
Dernière intervention
11 avril 2010

bonjour,
j'utilise deux objets TImageList "LargeIconList et SmallIconList" qui représentent les petites et moyennes icônes.
Ensuite j'affecte à la propriété Handle de TImageList la valeur renvoyé par "SHGetFileInfo :API Windows" regarde la procédure "FormCreate dans interface.cpp" Ceci à pour but de faire pointer nos deux TImagesList sur la Listes d'images interne à windows pour les petites et moyennes icones.
Pour finir j'utilise la fonction "GetIconIndex dans interface.cpp" qui va me retourné l'index de l'image en fonction de l'extension du nom de fichier passé en paramètre.
Pour récupérer le contenu d'un dossier j'utilise les fonctions "FindFirst et FindNext :API windows"
n'hésites pas à laisser un message pour plus d'explication.

Cordialement en espérant t'avoir aidé.
Messages postés
5
Date d'inscription
lundi 3 février 2003
Statut
Membre
Dernière intervention
15 avril 2010

j'aimerais savoir comment tu récupère le contenu des dossier de partage et leurs icones respectif, j'ai regarder dans ton code mais sans grand succès de compréhension ...
jolie travail !
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.