2010-05-29 10 views
0

Ce que j'essaie actuellement de faire est de créer un forum Web de base pour irc en utilisant Silverlight.Problème de communication client/serveur .NET TCP

Fondamentalement comment je tente de le faire est d'avoir un serveur tcp à l'écoute des connexions de Silverlight. Lorsqu'un client se connecte, il crée une nouvelle connexion à irc et les données sont transférées vers/depuis le client/irc via l'application serveur. Je l'ai réussi à fonctionner correctement pour une connexion client, mais dès que deux clients (ou plus) se connectent, plusieurs connexions sont effectuées vers irc, mais toutes les données transmises par les clients passent simplement par la dernière connexion irc (si ça a du sens). Par exemple, Client1, Client2 et Client3 sont tous connectés à irc, mais peu importe qui envoie les données, tout passe par Client3. Entre l'application client et l'application serveur, elle reconnaît les données provenant de différents clients, donc je crois que les problèmes résident dans la façon dont je me suis connecté à l'irc. Lorsque le serveur TCP accepte un nouveau client, un nouveau thread est créé pour écouter les données entrantes, et à partir de là un nouveau thread est créé pour se connecter à irc. Je suis sûr que c'est là que le problème existe, mais je me suis beaucoup embrouillé maintenant et je me demande si quelqu'un peut m'aider à trouver une solution.

EDIT: Ce qui me semble être le problème, c'est qu'il ne peut pas distinguer quel thread le client spécifique utilise, donc il l'envoie simplement via le dernier. Est-ce faisable?

+0

Bienvenue sur SO. Merci de ne pas dupliquer "C#" dans le titre et dans les tags. En outre, votre problème est avec .NET, pas avec le langage de programmation C#. –

+0

Vous devriez probablement poster une partie du code clé. – m0s

Répondre

0

Il semble que le serveur n'ouvre les sockets que jusqu'à la dernière connexion établie. Peut-être que si vous essayez de traiter le message sur le serveur et d'ouvrir une socket sur le client, cela pourrait fonctionner.

+0

Je ne pense pas qu'il y ait un problème avec cette partie. Il envoie des données du client -> serveur -> irc qui est le problème. Le client entre les données, il va au serveur (cette partie est bien), il va ensuite à l'irc (c'est là que tout sort de la dernière connexion) – Jamie

0

Je pense que votre problème dans le modèle de thread et la façon dont vous gérez votre pool de connexions. Lire cet article Simple Threaded TCP Server.

Questions connexes