|
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
|
|||||||||||
Чтение сообщений и отправка сообщений от нескольких клиентов20.07.2023, 23:16. Показов 1190. Ответов 9
Метки нет (Все метки)
Добрый день. Пишу учебный сервер чат мессейджер через TcpListener.
Когда запускается сервер и клиент, чат работает, основную функцию выполняет. Реализованно если кратко так
Я примерно понимаю, что
0
|
|||||||||||
| 20.07.2023, 23:16 | |
|
Ответы с готовыми решениями:
9
Отправка нескольких CAN сообщений Отправка нескольких сообщений через QTcpSocket
|
|
|
||
| 21.07.2023, 00:56 | ||
Для начала рекомендую таки почитать про потокобезопасные коллекции на C# (в гугл, мне лень искать сейчас), и только потом пытаться что-то реализовывать.
0
|
||
|
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
|
||
| 21.07.2023, 11:09 [ТС] | ||
|
Ну то есть код -то один, но его могут использовать несколько пользователей. Вот как мне например обратиться перед занесем в коллекцию отдельно на примере двух пользователей, например пользователь1 и пользователь2. Как система их распределяет, по какому свойству... Это не очень понимаю.
0
|
||
|
|
|
| 21.07.2023, 12:40 | |
|
KAPATEJlb, окей, начнем с супер основ: два потока Threаd (даже не асинхроных, вот прям new Thread и погнали). В каждом потоке есть цикл от 0 до 100. Вам нужно из каждого потока в общую коллекцию записать от 0 до 100 (очередность не имеет значение). Как вы для этих двух потоков организуете общую коллекцию?
Тоже самое будет и для подключенных клиентов: они будут обрабатывать входящие данные в своем потоке, но где-то там у вас объявлена общая коллекция (скажем через тот же static, то это нубский вариант), к которой и идет обращение.
0
|
|
|
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
|
||
| 21.07.2023, 14:53 [ТС] | ||
|
да, мне нужны супер основы)
Ваши слова мне вроде как понятны, но как я понимаю в данном примере просто созданы два потока-функции которые заполняют коллекцию. Но вопрос мой наверное более противоположный. Например как мне создать ТРЕТЬЮ функцию, не в которую, а которая сама будет обращаться к потоку один или потоку два и брать от туда информацию. Самый банальный пример в потоке один хранится переменная "result=one". В потоке два хранится переменная "result=two" как мне из третьего метода обратиться к каждому из потоков, чтобы переменную из нужного мне примера. Может пример грубый и не правильный, не спорю, но пытаюсь разобраться) Добавлено через 6 минут Потому что например сервер из моего учебного проекта. У меня получается отправлять сообщения только первому клиенту, а если я буду добавлять в коллекцию и отправлять всем элементам в коллекции, то какое свойство мне брать для рассылки.
0
|
||
|
|
|||||||||||
| 21.07.2023, 16:13 | |||||||||||
Сообщение было отмечено KAPATEJlb как решение
Решение
Ух... очень сложно понять ваше сообщение, плюс сам могучий русский под "потоком" может подразумевать как Thread, так и Stream... Вот самый банальный (и не правильный) пример многопоточного подключения
1
|
|||||||||||
|
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
|
|||||||
| 22.07.2023, 18:14 [ТС] | |||||||
0
|
|||||||
|
|
|||
| 22.07.2023, 23:33 | |||
|
- отправлка где-то в другом потоке, которая по идеи зависит от Task.Delay(200). Вообще, если вы для синхронизации ставите Delay -- уже не правильно. Для этого существуют мютексы/семафоры/ивенты. Отправка сообщения должна быть в том же потоке, где идет считывание. Т.е. нужно слиять ReadAsync и SendAsync в единый метод. Вся сложность таких многопоточных приложений в том, что ошибки "плавающие". Т.е. запустив один раз на "проверить", вы скорее всего не отловите ошибку, но это не гарантирует стабильную работу от слова "совсем".
0
|
|||
|
3 / 3 / 0
Регистрация: 05.02.2017
Сообщений: 218
|
||||
| 23.07.2023, 13:11 [ТС] | ||||
|
Спасибо вам, работаю над ошибками и осмысливаю) Добавлено через 2 минуты
0
|
||||
|
|
||
| 26.07.2023, 09:01 | ||
|
Не по теме: У меня впечатление, что вы в каком-то авральном режиме проходите курс по C#, и у вас не успевает устаканиваться базовая инфа с предыдущих тем, а какие-то вы либо пропустили, либо порядок обучения у вас не правильный.
0
|
||
| 26.07.2023, 09:01 | |
|
Помогаю со студенческими работами здесь
10
Отправка последовательно нескольких сообщений в Telegram Bot
Совмещение кастомных сообщений об ошибках и подробных сообщений, возможно ли это? Ограничить отправку сообщений пользователю до 5 с выводом оставшихся сообщений Отправка сообщений на IP Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|