|
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
|
|
Отправка сообщения (одним) сервером многим клиентам20.02.2013, 02:12. Показов 10896. Ответов 25
Метки нет (Все метки)
Здравствуйте. Столкнулся с одним проблематичным заданием.
Есть приложение клиент-сервер. Нужно с сервера отправить сообщение всем клиентам ОДНОВРЕМЕННО по заданому времени. Написал уже не одно подобное приложение через протокол TCP. Но суть его заключается в том, что сервер слушает запрос клиента и потом отправляет данные. У каждого клиента свое время и оно, пускай даже на несколько секунд, не совпадает. Пробовал через протокол UDP, без проблем, если общатся один клиент - один сервер. Или если все компьютера находятся в одной доменной сети - то все работает очень хорошо, на всех машинах. А что же делать если они не соеденены одной доменной сетью?? Пробовал груповую рассылку, подключения к группе на которую идет рассылка, но метод JoinMulticatsGroup() поддерживает диапазон IP адрессов с 224.0.0.0 до 239.255.255.255 подскажите как можно отправить одно сообщение с сервера ВСЕМ клиентам по заданому времени. И желательно чтоб не клиент запрашивал сообщение, а сервер сам решал когда хочет послать это самое сообщение. извините, не в ту вкладку написал. переместите пожалуйста тему во вкладку C# Windows Forms.
1
|
|
| 20.02.2013, 02:12 | |
|
Ответы с готовыми решениями:
25
Отправка сообщения всем клиентам Заголовок сообщения: Отправка SOAP request сервером Передача сообщения всем подключенным клиентам |
|
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
|
||
| 20.02.2013, 16:51 | ||
|
1
|
||
|
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
|
|
| 20.02.2013, 21:49 [ТС] | |
|
в этом и заключается проблема. Как ОДНОВРЕМЕННО всем послать сообщение??
0
|
|
|
136 / 104 / 9
Регистрация: 30.01.2011
Сообщений: 699
|
|
| 20.02.2013, 21:58 | |
|
C17H19NO3, каждое в своем потоке и на разных портах?
P.S. А вообще затея какая-то не правильная..может надо все-таки разницу просто учитывать?
1
|
|
|
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
|
|
| 20.02.2013, 22:40 [ТС] | |
|
если на разных портах - тогда каждый клиент должен быть на строго определенном (для него) порте.
Может и не правельная затея, но вот захотелось реализовать. Что вы имеет введу под учетом разницы, какую разницу не учитывать??
0
|
|
|
Неадекват
1501 / 1237 / 248
Регистрация: 02.04.2010
Сообщений: 2,807
|
||
| 20.02.2013, 23:19 | ||
1
|
||
|
218 / 212 / 63
Регистрация: 17.04.2012
Сообщений: 382
|
|
| 21.02.2013, 01:45 [ТС] | |
|
можно и туда пойти, но через какой протокол это делать??. существует протокол груповой рассылки IGMP, но поддерживает он определенный диапазон айпи адрессов. Проблема не в запусках потоков, не в описании кода, а в протоколе. Какой протокол поддерживает груповую рассылку.
Но, на сколько я понял, практически не реально. Даже если спустится на самый назкий уровень - поддержка идет в рамках локальной сети. Остановился на TCP, куча серверов и один клиент, обращается по очереди к каждому серверу, за секунду посылает сигнал больее чем на 200 компов. если нужно будет, можно и потоки запустить. Но вдруг у кого какие-то идее есть - делитесь)).
0
|
|
|
136 / 104 / 9
Регистрация: 30.01.2011
Сообщений: 699
|
|
| 21.02.2013, 11:27 | |
|
C17H19NO3, я разницу времени рассылки имел в виду.
Просто если нужно что-то всем клиентам сделать одновременно, то тут имеет смысл высылать им еще и время задержки.
1
|
|
|
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
|
|
| 21.02.2013, 16:31 | |
|
0
|
|
|
136 / 104 / 9
Регистрация: 30.01.2011
Сообщений: 699
|
|
| 21.02.2013, 16:35 | |
|
n1l, Можете объяснить подробнее?
Я не могу понять, как можно многопоточным сервером послать кучу сообщений через один порт..Ведь многопоточный доступ к ж/д прироста скорости не даст..скорее замедление. Тут очень похожая ситуация, если я правильно понимаю.
0
|
|
|
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
|
|
| 21.02.2013, 17:12 | |
|
Я не понял почему вы спросили про скорость.
Но объясню, как я думаю, а думаю я так. В реализации сервера важно то, как он передает данные. Т.е. протокол. TCP не гарантирует целостности соединения, но зато гарантирует передачу данных. Т.е. мы с вами должны хранить на сервере все соединения, и в определенный момент времени отправить всем подключенным клиентам сообщение. Для этого мы используем потоки, которые содержат данные о соединении для каждого клиента. Задержка конечно будет, но она будет настолько минимальна, что я думаю никто не заметит. Честно говоря, я не создавал коммерческих многопоточных tcp-серверов, просто я знаю, что обычно так делают. А еще есть же синхронизация потоков, потому возможно, что сообщение все таки можно отправить сразу всем. Если так критично, то можно попробовать сделать web-server, с реализованным на нем rest api который будет отдавать данные по требованию клиента, в заданном для него и у него времени, например через json, а приложение клиент будет их получать, десериализовывать и показывать. Если я в чем то ошибаюсь, то думаю меня сразу поправят.
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
||||
| 21.02.2013, 18:05 | ||||
|
Добавлено через 23 минуты
Так что нужны IP Multicast + IGMP. IGMP - ответ на твой вопрос. Цитаты с : Вики
0
|
||||
|
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
|
||
| 21.02.2013, 18:14 | ||
|
Сомнения основываются на том, что большинство P2P сетей, основаны на UDP. К примеру пресловутые торренты.
0
|
||
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
|
| 21.02.2013, 18:18 | |
|
n1l, Возможно, я в протоколах мало чего знаю. IP - все лишь конверт. Возможно и с UDP.
0
|
|
|
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
|
|
| 21.02.2013, 18:32 | |
|
Ну давайте пороемся что-ли. Докопаемся до сути.
Я могу рассказать об HTTP. Я знаю что http — это обычный текст. Т.е. компьютеры обмениваются текстом в которых содержится информация, а так же команды. Так же я знаю, что порты — это всего лишь определенные числа, закрепленные за каким-то ресурсом. Насчет TCP, как я понимаю там более низкий уровень, связанный с набором битов. А ниже TCP только IP. Получается, что бы во всем разобраться, нужно начать с протокола IP, ибо для студентов инкапсуляция — зло.
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
|
| 21.02.2013, 18:53 | |
|
Уговорил. Offtop public researching
![]() Как уже было сказано - нужен IP Multicast. Гуглю. ![]() Добавлено через 16 минут Все, дошло: 224.0.0.0 – 239.255.255.255 - диапазон адресов (передача по UDP,да), который можно назначать для групповой рассылки в каждой локальной сети. При этом о наличии подписки на рассылку спрашивает сторона маршрутизатора, "смотрящая" в эту локальную сеть. Хосты, подписавшиеся на рассылку, сами следят за наличием принадлежности к адресу подписки, и при отказе от подписки просто перестают отвечать на опросы маршрутизатора. Что касается глобальных связей, то маршрутизаторы общаются по IGMP, и сообщают друг другу о своих подписчиках. Все просто. IGMP - уже отдельная тема для разговора.
0
|
|
|
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
|
|
| 21.02.2013, 19:07 | |
|
Видите? Все оказывается очень разумно.
Ссылочку пожалуйста будте добры. Я читал про IP-протокол, и нашел нечто под названием broadkast. Возможно вы о нем говорили выше. Например, 194.124.84.0 - сеть класса С, номер хоста в ней определяется последним октетом. При отправлении широковещательного сообщения оно отправляется по адресу 194.84.124.255. Номера, разрешенные для присваивания хостам: от 1 до 254 (194.84.124.1 — 194.84.124.254), всего 254 возможных адреса. Т.е. если мы отправим с нашего tcp-сервера сообщение по адресу широковещательного канала, то оно отправится всем. А клиенты просто должны слушать определенный порт.
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
|
| 21.02.2013, 19:24 | |
|
0
|
|
|
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
|
|
| 21.02.2013, 19:24 | |
|
Вот нашел кстати тему о широковещательных сообщениях на cyberforum'e.
Реализация на C#. Потрясающе, да?
0
|
|
|
4694 / 2702 / 734
Регистрация: 02.08.2011
Сообщений: 7,233
|
|
| 21.02.2013, 19:27 | |
|
ну да
Обычно поиском по сайту не пользуюсь почему-то )
0
|
|
| 21.02.2013, 19:27 | |
|
Помогаю со студенческими работами здесь
20
Разослать сообщения всем подключенным клиентам Отправка всем клиентам Отправка сообщений всем клиентам Консольный чат. Почему сервер не пересылает сообщения клиентам? Сервер рассылает сообщения в определенное время определенным клиентам Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
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-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|