Se connecter avec
S'enregistrer | Connectez-vous

Client / Serveur C#

Dernière réponse : dans Programmation

Bonjour à tous,

J'ai créé un "chat" réseau et je rencontre quelques difficultés afin de continuer mon projet qui ne se limitera pas qu'à un simple "chat".

Pour résumer, j'ai créé un programme "client" et un programme "serveur". Comme vous l'avez surement deviné, tous les utilisateurs du réseau utiliseront le même programme client pour se connecter au serveur.

La partie "chat" fonctionne mais maintenant j'aimerai pouvoir depuis le programme "Serveur" permettre de transmettre à tous les clients connectés, par exemple une image qui s'affichera dans un panel sur leur fenêtre de "chat".

Mon problème est le suivant: Comment je peux faire pour accéder aux composants du programme Client à partir du programme serveur étant donné que ce sont deux programmes séparés?

L'opération serait de dire au serveur -> récupère la liste des connectés -> Envoi dans leur panel telle image.

A ce niveau je ne trouve pas de solutions et je ne vois pas comment je pourrai faire étant donné que je n'ai pas accès aux composants du client!

Donc si quelqu'un aurait une piste pour me débloquer ça serait sympa de me donner un coup de main!

Merci d'avance!

Neophyte

Autres pages sur : client serveur

Lassé par la pub ? Créez un compte
Expert Programmation

Faire comme les autres ? Soit tu instancies une connexion direct avec tous les problèmes que cela induit ! Enfin, à vérifier mais je crois bien que c'est la solution qu'utilise Microsoft dans MSN pour le transfert de fichier. d'où l'intérêt d'envoyer un fichier pour récupérer l'IP d'une personne.

Sinon fait proxy.

Bon, après tout ce que tu cherches à faire c'est faire un protocole donc tu n'a qu'à regarder LE protocole ouvert de messagerie instantanée XMPP et voir comment ils ont implémenté le transfert de thumbnails. Accès au spec XMPP puis Transfert bit à bit.

En gros si tu n'es pas fan, que tu dev un peu à l'arrache et qu'il s'agit de petit fichier. Fait un encodage en base64 d'un coté puis de l'autre tu fais un décodage. Tu stocks le résultat de ton base64 comme un message un peu basique et emballé c'est pesé. Par contre ton serveur va devoir pas mal avoir de bande passante.

SiM07 a dit :
Faire comme les autres ? Soit tu instancies une connexion direct avec tous les problèmes que cela induit ! Enfin, à vérifier mais je crois bien que c'est la solution qu'utilise Microsoft dans MSN pour le transfert de fichier. d'où l'intérêt d'envoyer un fichier pour récupérer l'IP d'une personne.

Sinon fait proxy.

Bon, après tout ce que tu cherches à faire c'est faire un protocole donc tu n'a qu'à regarder LE protocole ouvert de messagerie instantanée XMPP et voir comment ils ont implémenté le transfert de thumbnails. Accès au spec XMPP puis Transfert bit à bit.

En gros si tu n'es pas fan, que tu dev un peu à l'arrache et qu'il s'agit de petit fichier. Fait un encodage en base64 d'un coté puis de l'autre tu fais un décodage. Tu stocks le résultat de ton base64 comme un message un peu basique et emballé c'est pesé. Par contre ton serveur va devoir pas mal avoir de bande passante.


Merci pour ta réponse. Je vais jeter un coup d'oeil sur XMPP.

Par contre le projet final ne sera pas juste un affichage d'un élément sur les clients. Là c'est juste une étape pour tester comment ça fonctionne et me familiariser avec les protocoles de communications.

En faite, mon projet final n'est autre qu'un poker en réseau, où les clients se connectent au serveur et celui-ci leur permet de chatter et gère la partie de poker qu'il va transmettre aux clients connectés. Donc je ne pense pas que l'encodage soit la bonne solution.

CRicky a dit :
Dans l'implémentation du protocole applicatif, tu peux aussi faire 2 canaux pour gérer les deux sens.


Je suis d'accord mais le problème persistera quand même!
Car ok les clients passent par un canal, ils reçoivent la réponse du serveur et après affiche le message dans leur textbox.

Mais maintenant, le serveur passe par un autre canal pour rejoindre les clients, il est connecté très bien mais, maintenant comment il fait pour envoyer ses données dans un composant du programme client?? C'est à ce niveau que je ne comprend pas bien...
Expert Programmation

Je ne vois pas le problème.

Tu peux aussi faire une commande client FETCH qui fait une demande au serveur qui répond une commande SERV_RESP embarquant une commande du serveur ou des données. Après côté client, tu peux lancer la commande fetch toutes les secondes pour se synchroniser avec le serveur à la seconde.
Bref, à toi de définir ton protocole applicatif comme tu l'entends.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde