С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 1
Регистрация: 04.03.2013
Сообщений: 66

Сервер UDP принимающий/передающий пакеты от всех/всем клиентам

18.06.2016, 19:50. Показов 4845. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написан клиент, который передает пакеты на север. Помощь нужна в следующем. Мне нужно чтобы приходящие пакеты на сервер сразу были перенаправлены по ip клиентам, которые были подключены к серверу и не отсоединялись. Или скиньте пожалуйста информацию под данной тематике.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.06.2016, 19:50
Ответы с готовыми решениями:

Многопоточный сервер TCP: разослать сообщения по всем клиентам
Есть tcp сервер, который принимает данные от клиентов и выводит в консоль, и дает ответ клиенту. Уже сутки не могу решить одну...

Ищу UDP демон принимающий/передающий данные сенсоров
Привет всем! На Ubuntu установлен веб сервер apache с mysql, есть wifi модуль передающий данные с сенсоров, по протоколу udp. Есть ли...

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

25
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
18.06.2016, 21:31
vitas199405, такую логику работы приложения очень просто реализовать на WCF.
0
0 / 0 / 1
Регистрация: 04.03.2013
Сообщений: 66
18.06.2016, 22:07  [ТС]
Мне к сожалению не нужно WCF. У меня все данные передаются через протокол UDP.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
18.06.2016, 22:14
Цитата Сообщение от vitas199405 Посмотреть сообщение
У меня все данные передаются через протокол UDP.
Вы плохо знакомы с предметом, к сожалению))) В WCF нет готового стека каналов на основе UDP, но есть класс UdpTransportBindingElement, на основе которого можно создать свой стек. И будет вам на UDP, как вы и хотели)
0
0 / 0 / 1
Регистрация: 04.03.2013
Сообщений: 66
18.06.2016, 22:32  [ТС]
Как я понял WCF работает с http запросами. Или я что-то не так понял? Объясните.)
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
19.06.2016, 07:14
Цитата Сообщение от vitas199405 Посмотреть сообщение
WCF работает с http запросами
Это зависит от транспорта, а точнее-от привязки. WCF предоставляет 9 готовых привязок (привязка-сконфигурированный стек каналов), но можно создать и свою привязку.
0
0 / 0 / 1
Регистрация: 04.03.2013
Сообщений: 66
19.06.2016, 08:55  [ТС]
можете, тогда представить пример по моей тематике?
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
19.06.2016, 14:38
Цитата Сообщение от vitas199405 Посмотреть сообщение
пример по моей тематике
vitas199405, понимаете в чем дело...
UDP - однонаправленный протокол, и клиент при передаче сообщения не получает никакого подтверждения, что кто-то его вообще получил. Так что концепция подключения, как вы сказали в первом посте
Цитата Сообщение от vitas199405 Посмотреть сообщение
перенаправлены по ip клиентам, которые были подключены к серверу и не отсоединялись
практически невозможна. По крайней мере, насколько мне известно. И второй вопрос: чем продиктована необходимость использования Udp? Как я предполагаю, такое может быть продиктовано необходимостью клиентам динамически узнавать адрес службы в сети (когда адрес службы заранее неизвестен, и использовать его в коде клиентов невозможно). Это так?
0
0 / 0 / 1
Регистрация: 04.03.2013
Сообщений: 66
19.06.2016, 15:31  [ТС]
Udp я использую для скоростной передаче аудиопакетов между клиентами через сервер. Сервер выступает в роли разветвителя. Так например клиент1 отправляет сообщение серверу, а тот в свою очередь отправляет этот пакет другим клиентам. Клиент2 отправляет аудиопакет на сервер, а сервер отправляет это сообщение остальным пользователям. Сервер также проверяет находится ли пользователь в сети, методом отправки пакета на клиент, который в свою очередь отправляет обратно этот пакет в знак его присутствия в сети, все адресы(iport) находятся в addresslist.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
19.06.2016, 15:39
vitas199405, у вас все это организовано в локальной сети или через интернет?
0
0 / 0 / 1
Регистрация: 04.03.2013
Сообщений: 66
19.06.2016, 16:14  [ТС]
работает как в через глобальную, так и через локальную сети
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
19.06.2016, 16:21
Цитата Сообщение от vitas199405 Посмотреть сообщение
как в через глобальную, так и через локальную сети
так а необходимость то Udp в чем заключена? Это же протокол многоадресной рассылки, и по моим наблюдениям, он гораздо медленнее, чем тот же Http (не говоря уже про Tcp).
Адрес центрального сервера заранее известен для того, чтобы изначально настроить всех клиентов для работы с ним или нет?
0
0 / 0 / 1
Регистрация: 04.03.2013
Сообщений: 66
19.06.2016, 16:32  [ТС]
UDP гораздо медленнее, чем тот же Http (не говоря уже про Tcp).
Спасибо за наставление в развитии , но к сожалению у меня не осталось времени переделывать программу. Так как мне ее завтра представлять в готовом виде.
Адрес центрального сервера заранее известен для того, чтобы изначально настроить всех клиентов для работы с ним или нет?
Адрес сервера известен заранее клиентам, то есть прописан в коде (на представлении я буду использовать локальный ip, который выдает сеть), а клиентские ip буду известны после их включения. (то есть при включении клиентской программы, он автоматически передает сообщение о включении, а сервер отлавливает это сообщение и записывает его в addresslist
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
19.06.2016, 16:43
Цитата Сообщение от vitas199405 Посмотреть сообщение
у меня не осталось времени переделывать программу
Ну скажем так, задачка не особо сложна, и переделать ее займет примерно часа два-три. Вам же нужен минимальный функционал: старт сервера, подключение клиентов и потом любой из клиентов берет массив данных (байт) и передает на сервер, а тот рассылает его всем подключенным клиентам.
Я все верно озвучил?
0
0 / 0 / 1
Регистрация: 04.03.2013
Сообщений: 66
19.06.2016, 17:02  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Вам же нужен минимальный функционал: старт сервера, подключение клиентов и потом любой из клиентов берет массив данных (байт) и передает на сервер, а тот рассылает его всем подключенным клиентам.
Я все верно озвучил?
Все верно. Добавлю только одно. Все это должно работать на UDP протоколе. И чуть чуть поясню для большей конкретики схемой.
Миниатюры
Сервер UDP принимающий/передающий пакеты от всех/всем клиентам  
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
19.06.2016, 17:10
Цитата Сообщение от vitas199405 Посмотреть сообщение
Все это должно работать на UDP протоколе
Поддержка UDP появилась в WCF начиная с .NET4.5, а я использую .NET4.0. Но если у вас есть возможность, вы сможете переделать проект.
Цитата Сообщение от vitas199405 Посмотреть сообщение
поясню для большей конкретики схемой.
Да это и так было ясно, в моем посте именно такая логика и представлена.
Ну так что, сделать вам тестовый проект? Все приложения (и клиент, и сервер) будут на основе WinForm. В качестве транспорта будет Http ( как самый удобный для работы в интернете). Если захотите, потом переделаете.
0
0 / 0 / 1
Регистрация: 04.03.2013
Сообщений: 66
19.06.2016, 17:41  [ТС]
А возможно реализовать сервер на wcf. Не трогая клиентскую часть? И заставить их работать между собой wcf сервер и wpf клиент? К сожалению менять протокол никак нельзя. А в http я, мягко говоря, Дуб. Да и вся система будет работать, все таки локально, так как политика, в той сети где будет презентация, закрытая.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
19.06.2016, 18:58
vitas199405, если уж переделывать, то скорее всего все. Но клиентскую часть работы с сервером можно вынести в dll, а из какого приложения ее потом использовать-это уже не играет роли.
Цитата Сообщение от vitas199405 Посмотреть сообщение
менять протокол никак нельзя
А вот это уже плохо. Я, конечно, не супер спец, но никак не могу понять, кто вам поставил задачу использовать именно этот протокол для такого приложения. Этот протокол не подразумевает наличия обратной связи, и адреса вам, по сути (при рассылке от сервера сообщений клиентам) вовсе не нужны. UDP-широковещательная рассылка, сервер шлет сообщения по всей сети, без указания адресов, а получил их кто-то или нет-его не волнует, и узнать об этом он не может. Но поскольку у вас в задании расписано еще и поиск клиентов, их регистрация, то все получится очень громоздко и неудобно. Тут, в общем, классическая задача с дуплексным общением, и учитывая ваше последнее замечание (про работу в локальной сети), транспорт TCP (с его бинарным кодированием) подошел бы как нельзя лучше.

У вас есть формализованное ТЗ данной задачи, или вам ее просто обрисовали на словах? Любопытно было бы глянуть.

Добавлено через 19 минут
vitas199405, кстати, гляньте эту тему, там как раз про UDP.
Простейшие коды клиент-сервера UDP

Добавлено через 1 минуту
И вот еще. Поищите, примеров, думаю, много будет.
Клиент-Сервер на UDP. Работающий
0
0 / 0 / 1
Регистрация: 04.03.2013
Сообщений: 66
19.06.2016, 19:00  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
Этот протокол не подразумевает наличия обратной связи, и адреса вам, по сути (при рассылке от сервера сообщений клиентам) вовсе не нужны. UDP-широковещательная рассылка, сервер шлет сообщения по всей сети, без указания адресов, а получил их кто-то или нет-его не волнует, и узнать об этом он не может.
Тут я с вами согласен. Но уж что начато, то надо мне и закончить.
Цитата Сообщение от insite2012 Посмотреть сообщение
кто вам поставил задачу использовать именно этот протокол для такого приложения.
Это я. Изначально я делал по TCP протоколу, но со временем решил, что UDP протокол лучше подойдет под мою задачу. И все это завернулось в диплом. Хоть я и хотел взять элементарную тему для написания диплома. Но тут я понял в какую "грязь" я влез. Вот тут и я решил довести дело до конца. Осталось сделать сервер, который будет иметь динамически создаваемые потоки для каждого подключенного клиента, передавать аудиопакеты от клиента к клиентам и проверять их состояние (подключенный/отключенный) и все это на протоколе UDP. Если вы мне поможете в реализации данной задачи, то я вам буду очень благодарен.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
19.06.2016, 19:27
Цитата Сообщение от vitas199405 Посмотреть сообщение
Если вы мне поможете в реализации данной задачи
Ну раз вы сами себе такую задачу поставили, то почему бы не изменить условия и вернуться к TCP? С его использованием (и используя WCF) ваша задача решается чуть сложнее чем элементарно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.06.2016, 19:27
Помогаю со студенческими работами здесь

Клиент отправляет сообщение сервеу, а сервер это отправляет всем клиентам...
Есть сервер и несколько клиентов. Клиент отправляет сообщение сервеу, а сервер это отправляет всем клиентам. Прошу помочь разобраться.

Отправка всем клиентам
Что бы с сервера - server=socket.socket() отправить всем клиентам сообщение нужно использовать server.send()?

Отправка сообщений всем клиентам
Здравствуйте. Создал многопоточный сервер, но никак не могу разобраться с тем, чтобы сервер отправлял сообщение всем клиентам а не только...

Рассылка текста всем клиентам
Всем привет. Нужна помощь: Требуется разослать текст от сервера всем клиентам. Dim IP As IPAddress Dim Port As...

Отправка сообщения всем клиентам
Пишу (пробую) чат на сокетах. Клиент на андроиде. И не могу уже день разобратся с проблемой отправки сообщения всем клиентам. Я пробовал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru