Serveur chat

1/5 (15 avis)

Vue 10 627 fois - Téléchargée 1 545 fois

Description

Voici un petit serveur chat en mode console, il utilise directement l'API Winsock ce qui lui procure une grande stabilité et une portabilité vers d'autres plateformes (Linux, Unix, MacOs, MacOsX, ...) ainsi que vers d'autre langages (C/C++, Kylix, VB, ...)

Source / Exemple :


// Dans le zip y'en a marre de coller la source, lol

// Mise a jour le  03/12/2002 :
//      Correction du bug d'envoie de msg en cas de deconnection du client

//      Amélioration du moteur d'envoi des mssage ainsi que des exceptions
//             Test effectué sur 4 machines en rezo avec un tutal de 25 clients/machines

//    Test de robustesse :
//                                MasterFlood (50 000 lignes) :
//                                      - 2 client "flooder" en simultanné
//                                      - 1 client de controle de non plantage
//                                    Test reussi sans encombres... essayez pour voir...
//                                           conseil pour ce test : placer vos procédures d'envoie et 
//                                                             de reception dans 2 Threads distincts
//                                                              risque de buffer de reception plein

Conclusion :


Vous voila paré a faire un chat... et peut-être concurencer l'IRC ki sait?lol
Je n'ai pas fourni de client étant donné k'il n'y a pas de protocole non plus... ça c a vous de le faire...
D'ici peu cette source vas etre transformée en Composant avec un protocole complet, ainsi que des login(une fois ke j'aurais compris le fonctionnement des bases de données dans delphi), voila, en attendant ammusez vous bien avec cette petite source ;)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
2 déc. 2002 à 09:43
Il fonctionne assez bien, le code est très bien ècrit !

Cependant devrais être mieux "sécurisé"...

En effet il est assez simple a planté et supporte mal un grand nombre de clients.

Il ne détecte pas les déconnexions erronées (perte de connexion ex: débranchement de modem, extinction d'un routeur .... ), donc il essaie d'envoyer des données sur des sockets qui ne sont plus utilisés, ce qui provoque un plantage..., ceci pourrais facilement être tester et corrigé.

Continue, il es très bien ....

Bon coding...

ManChesTer.
djtexas Messages postés 20 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 9 mai 2006
2 déc. 2002 à 12:26
la ligne :
if i<=0 then raise Exception.Create('fin de communication');
sert justement a créer une exeption et la fermeture des sockets non valides(ex: deconnections) j'ai testé cette ecentualité en reso local en débranchant l'ordi ou y'a le serveur du switch, le sever créé les exeptions et ferme les sockets alloués et attends de nouvelles connections.

pour ce qui est du nombre important de clients, je n'ai pas encore la solution. mais cela va surement venir.

de plus, en ce moment je travaille plus sur l'integration dans un environement graphique avec bdn pour identification, protocole evolué, ect...
djtexas Messages postés 20 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 9 mai 2006
2 déc. 2002 à 12:31
oups, nan, g vu en faisant un flood a partir d'un client, et debranchant l'ordi(server) du rezo, win2k n'apprecie pas trop, lol
djtexas Messages postés 20 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 9 mai 2006
2 déc. 2002 à 13:48
Voila, server updated, bug signalé par ManChesTer (a propos des sockets) corrigé en une ligne dans la procédure dispath...

if TClient(Clients[i]).Handle <> INVALID_SOCKET then TClient(Clients[i]).SendLine(s);

au lieu de :
TClient(Clients[i]).SendLine(s);
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
12 déc. 2002 à 17:43
la c'est vraiment beaucoups mieux ;o))

continue, et bon coding...

ManChesTer.

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.