2010-05-29 3 views
0

То, что я сейчас пытаюсь сделать, это сделать очень простой веб-чат для irc, используя silverlight.Проблема связи с компьютером/сервером .NET TCP

В основном, как я пытаюсь это сделать, есть сервер tcp, который прослушивает подключения от silverlight. Когда клиент подключается, он создает новое соединение с irc, и данные передаются/от клиента/irc через серверное приложение.

У меня есть возможность работать нормально для одного клиентского подключения, но как только два (или более) клиента подключаются к одному из нескольких соединений, все данные, переданные от клиентов, просто проходят через последнее соединение irc (если в этом есть смысл).

Например, Client1, Client2 и Client3 подключены к irc, но независимо от того, кто отправляет данные, все это происходит через Client3.

Между клиентским и серверным приложением он распознает данные, поступающие от разных клиентов, поэтому я считаю, что проблемы связаны с тем, как я подключился к irc. Когда TCP-сервер принимает нового клиента, создается новый поток для прослушивания входящих данных, и оттуда создается новый поток для подключения к irc. Я уверен, что в этом проблема существует, но я много запутался и задаюсь вопросом, может ли кто-нибудь помочь мне разобраться в решении.

EDIT: Я считаю, что проблема заключается в том, что он не может отличить, какой поток использует конкретный клиент, поэтому он просто отправляет его через самую последнюю. Можно ли это сделать?

+0

Добро пожаловать в SO. Пожалуйста, не дублируйте «C#» в заголовке и в тегах. Кроме того, ваша проблема связана с .NET, а не с языком программирования C#. –

+0

Возможно, вы должны опубликовать код ключа. – m0s

ответ

0

Кажется, что сервер открывает сокеты только для последнего соединения. Возможно, если вы попытаетесь обработать сообщение на сервере и открыть сокет клиенту, он может работать.

+0

Я не думаю, что есть проблема с этой частью. Это передача данных с клиента -> server -> irc, что является проблемой. Клиент вводит данные, он отправляется на сервер (эта часть в порядке), затем он переходит в irc (это значит, что все это выходит из последнего соединения) – Jamie

0

Я думаю, что ваша проблема в модели потоков и способ управления пулом подключений. Прочтите эту статью Simple Threaded TCP Server.

Смежные вопросы