Member 13568214 Ответов: 1

Как я могу получить сообщение от client1 к client2 через сервер, используя именованные каналы C#?


У меня есть проект, который содержит консольное приложение C# и клиентское приложение WPF. Цель состоит в том, чтобы любой клиент написал на сервер, а затем сообщение будет отправлено всем подключенным клиентам с сервера. В настоящее время я могу получить много клиентов для подключения к серверу с помощью потоков на стороне сервера. Проблема заключается в том, что когда какой-либо клиент отправляет сообщение, только этот же клиент получает сообщение обратно с сервера. Я пробовал искать помощь в интернете, но не могу найти ничего, что помогло бы мне общаться с сервером со всеми клиентами.

Я попытался создать список подключенных потоков и использовал цикл foreach() для отправки сообщения всем потоковым клиентам, но это не сработало.

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

Спасибо

Что я уже пробовал:

основы работы сервера:

-дождитесь подключения клиента
-ifConnected -> Создать Поток для подключения
-поместите нить в список
-в методе для резьбы: петля ->
-получение ввода streamreader от клиента
-в цикле foreach: напишите клиентское сообщение на консоль сервера и используйте streamwriter для отправки
сообщение для всех потоковых клиентов в цикле foreach


основы работы с клиентами (WPF):
-типы пользователей в сообщении
-когда пользователь нажимает на кнопку Отправить:
- используйте streamwriter для отправки сообщения на сервер
- использовать streamreader, чтобы получить сообщение от сервера
- отображение в текстовом блоке сообщений с сервера

PureNsanity

Есть ли причина, по которой вы должны использовать именованные каналы или ограничены ими?

1 Ответов

Рейтинг:
2

________________

Одно из решений (самое простое) - клиенты должны иметь таймер и пытаться считывать с сервера сообщения каждые 1 секунду (или меньше, или больше - в соответствии с требованиями бизнеса).

Во - вторых-каждый клиент должен быть также сервером для main, и когда main будет иметь сообщение от одного клиента, он должен транслировать это сообщение всем подключенным клиентам, используя свои серверы.