Socket asynchrone (client + serveur)

Soyez le premier à donner votre avis sur cette source.

Vue 19 352 fois - Téléchargée 2 766 fois

Description

Voila un exemple de "Chat", ou plus précisément une application utilisant des sockets Asynchrones.
J'ai essayé d'écrire cet exemple de façon la plus claire possible afin que tout le monde comprenne bien, car j'ai moi même bien galéré pour le mode asynchrone.

La solution est divisé en trois projets : une partie serveur (IHM), une partie cliente (IHM) et une librairie permettant la gestion des sockets aussi bien coté client que serveur, utilisable dans n'importe quelle de vos projet.

Les clients se connectent au serveur.
Le Serveur écoute et accepte les connexions d'un ou plusieurs clients.

Un message envoyé du serveur l'enverra à tout les clients connectés.
Un message envoyé d'un client, l'enverra sur le serveur qui à son tour le dispatchera aux autres clients.

Conclusion :


Il se peut qu'il reste encore quelques problèmes lors des déconnexions.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Children
Messages postés
84
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
29 avril 2009
-
Première remarque: ta source marche a merveille ;)
Deuxième remarque: si tu souhaite créer une source clair (et c'est tout à ton avantage, car il y a beaucoup de source sur les sockets peut accessible aux débutant, un peu comme moi :p) je te suggère de mettre directement le code en "brut" (je ne sais pas si c'est le terme exact), plutôt que d'utiliser mysettings, et une form pour gérer les préférence. Cela permettrait, à mon avis de rendre le code beaucoup plus compréhensible. Et pour la rendre encore plus accessible, ne pas utiliser de classe met directement les fonctions des sockects permettrait de bien comprendre comment utiliser ces derniers. Évidemment cela rend le code "sale", mais bon...ce ne sont que des suggestions...
a+
elguevel
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3 -
Déjà content que çà fonctionne sur d'autres configurations que la mienne.

Sinon on est toujours partagé entre le fait de faire une source qui ne s'adresse qu'aux débutants et donc peu évolutive ( écrit en "brute" et hyper minimaliste), et le fait de faire un truc qui ressemble plus à un projet (modulable, facilement adaptable et propre).

Pour ma part je préfère faire des trucs propres, mais en jouant le jeu à fond ( bien renommer chaque composant, faire des classes distinctes, variables explicites, commentaires, ...), de plus cette approche donne l'exemple sur là façon de travailler et devient normalement claire. Si on ne fait que des trucs crades (et dieu sait qu'il y en a) tout le monde va faire pareil.

Le fait de faire ici une classe pour gérer la socket à part est au contraire plus simple pour ma part que tout mettre dans une Form. Si j'avais tout mis dans la form principale (comme fond certains) on ne sait plus quoi appel quoi (surtout le système des événements) et on ne sait plus ce qui appartient à la form et ce qui est lié à la socket.

Après les appelles aux ressources et l'utilisation des classes devrait normalement être étudié avant l'utilisation des sockets. Normalement un débutant devrait maitriser certaines approches avant d'autres... sinon effectivement on y arrive pas. J'ai d'ailleur classé cette source comme "Initié", et ici le mot débutant est assez relatif.. ce sont surtout les débutants en Socket.

En tout cas merci pour ta réaction.
cs_Children
Messages postés
84
Date d'inscription
lundi 5 février 2007
Statut
Membre
Dernière intervention
29 avril 2009
-
Ce que j'entendais par compréhensible était "clair", "visible". Mais comme tu l'a dit on est partagé entre la méthode "brute" et la méthode "propre". Il est vrai que la méthode propre permet de me mieux guider, mais cela dépend de la façon qu'ont les personnes d'observer le code. Après pour le terme débutant il est vrai que pour aborder les sockets il faut déjà avoir certaines bases, mais, par ma propre expérience, quand je voit directement par exemple truc.connect("127.0.0.1"), cela me permet d'identifier en un coup d'oeil la fonction et de comprendre le reste plus rapidement plutôt que d'aller chercher à quoi correspondent les variables. Après il est sûr que ce n'est pas pour ça que le code va devenir moins compréhensible :p
Afyn
Messages postés
613
Date d'inscription
samedi 3 août 2002
Statut
Membre
Dernière intervention
22 décembre 2016
-
Bonjour

Y at il une possibilité d'insérer des émoticones dans le texte ?

Afyn - Navedac
elguevel
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3 -
C'est possible, mais il faut le faire.
Là telle qu'elle, elle ne gère rien d'autre que du texte brut.

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.