Serveur multithread sous linux/windows[mysql][vc++/devc++/g++]

Soyez le premier à donner votre avis sur cette source.

Vue 15 981 fois - Téléchargée 5 599 fois

Description

Je sais que ce n'est pas le premier, mais je crois qu'il est un peu plus élaboré que ceux que j'ai pu voir.

C'est un simple serveur multithread pouvant être compilé pour fonctionner sous Linux/Windows. Il gère l'utilisation d'une base de donnée MySQL, tout est divisé en classe (mais parfois je me dis que je me suis planté dans certain endroit de l'architecture). Gestion du mode debug (avec fichier log).

Ce que peux faire le serveur :
- Transmettre des messages entre clients connectés
- Enregistrer des messages hors-ligne dans la base de donnée (et éventuellement les retransmettres aux connectés)
- Console admin (primitif)
- Gestion des status (comme MSN)
- La fonction de traitement des données est très facile à modifier ou a remplacer.

Le projet contient les projets en VC++7 ou DevC++, commande pour G++ (testé sur UBuntu), commandes MySQL.
g++ -pthread -lmysqlclient CBridge.cpp CConfiguration.cpp CConnexion.cpp CDatabase.cpp CDataQuery.cpp CLog.cpp pwserver.cpp -o PBServer

Prérequis :
Linux :
- Pack MySQL Server, avec Dev
- G++
Windows :
- Pack Developper de MySQL qui se trouve avec l'installation de MySQL (en cochant l'option lors de l'installation.
- Librairie PThread pour Win32 (inclu dans le ZIP)
- Recommandé :
- Dev C++ ou VC++ 7 (mais avec 6 et 8 il ne devrait pas y avoir de problème)

La synchronisation fonctionne très bien, à venir jusqu'a maintenant en 2 semaines de test il n'a jamais planté (au bout de sa Win2000 avait son quota et le vieux Dell CPi ne digère pas trop les drivers de NuNux) mais le test s'est réalisé a 4 utilisateurs réguliés.

Le multithread n'est pas forcément l'idéal pour un simple messenger certe, mais j'avais envie de faire en sorte qu'il puisse transférer des fichiers plus tard (d'où la classe CBridge que je n'ai pas terminée ni même a peine commencé :P).

Source / Exemple :


//Dans le ZIP, vous ne m'aimeriez pas si je postais le main.cpp ici
//Il me semble avoir mis assez de commentaires

Conclusion :


En espérant que vous le trouverez utile, je le poste car quelqu'un s'est montré intéressé.
Pour compiler sous Linux il faut mettre #define UNIX au début des fichiers.
Level 2 car multiplateforme, si vous n'êtes pas d'accord je corrigerai le tir.

PS : Ne pas pleurer en voyant les nombreuses fautes d'anglais
PS2 : J'ai testé sur DevC++ avant de poster, mais pas retesté sur VC++ 7 (car mes fichiers .h sont corrompus)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de NitRic

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.