powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Широковещалка на TCPServer
28 сообщений из 28, показаны все 2 страниц
Широковещалка на TCPServer
    #33539022
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
Такая проблема! Пишу клиент-серверное приложение с использованием MySQL. На серваке стоит MySQL.На жругих компах написаны клиенты.Так же на серваке болтаеться простенькая программа-сервер с использованием компонента idTCPServer. Когда с какого либо клиента посылаеться сообщение на TCPServer, надо чтобы он всем другим активным клиентам его переслал. Одним словом это сделано для того, чтобы когда один клиент внес изменения в БД все остальные без проблем бы обновились. Как заставить TCPServer отвечать не тому клиенту, что сообщение послал, а всем активным в данный момент ?
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33539293
SnowMan2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для широковешательных сообшений следует использовать протокол UDP.
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33539297
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО ненадежно. Лучше сделать это средствами БД.
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33539305
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИМХО ненадежно. Лучше сделать это средствами БД.
присоединяюсь!

кстати, широковещать вполне может сам клиент, который что-то изменил. сервер для этого совершенно не нужен.
во-вторых, при таком методе оповещения будут проблемы, если будет запущено два клиентских приложения на одном компе - они не смогут оба открыть для прослушивания один и тот же порт.
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33539854
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо все что откликнулись! Интересует тема на счет широковещательных udp-сообщений! Раскажите что да как!? А на счет запуске двух приложений на одном компе, это можно запретить программно в той же софтине....
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33540118
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft maytonИМХО ненадежно. Лучше сделать это средствами БД.
присоединяюсь!

кстати, широковещать вполне может сам клиент, который что-то изменил. сервер для этого совершенно не нужен.
во-вторых, при таком методе оповещения будут проблемы, если будет запущено два клиентских приложения на одном компе - они не смогут оба открыть для прослушивания один и тот же порт.Клиент конечно широковещать может, но где гаранти что в базе не сработало какое-нибудь правило или триггер и никаких изменений не произошло?
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33540227
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_БалтикаКлиент конечно широковещать может, но где гаранти что в базе не сработало какое-нибудь правило или триггер и никаких изменений не произошло?
Так на сервере он же не из триггера, полагаю, широковещать собрался...
Наверное, будет какое-то клиентское приложение, которое что-то там будет отслеживать...а если так, то функционал этого приложенения вполне можно втащить в основное клиентское приложение.
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33540248
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft _БалтикаКлиент конечно широковещать может, но где гаранти что в базе не сработало какое-нибудь правило или триггер и никаких изменений не произошло?
Так на сервере он же не из триггера, полагаю, широковещать собрался...
Наверное, будет какое-то клиентское приложение, которое что-то там будет отслеживать...а если так, то функционал этого приложенения вполне можно втащить в основное клиентское приложение....и опять же грузить сетку ежесекундными запросами к центральной базе.
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33540254
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да и саму базу тоже...
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33540435
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Балтика...и опять же грузить сетку ежесекундными запросами к центральной базе.
зачем ежесекундными? вполне достаточно один раз после успешных изменений
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33540588
_Балтика
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftзачем ежесекундными? вполне достаточно один раз после успешных измененийЭто конечно верно. Но представте ситуацию, когда после получения сообщения одновременно сотня клиентов шлет одинаковые запросы к ЦБ.
К тому же это слишком трудоемко - таких клиентов создавать. При каждом изменении таблицы нужно проверять успешность сделанных изменений и затем слать сообщение об изменении этой таблицы. Можно конечно продумать какую-то универсальную ф-цию. Но уверяю Вас, есть выход проще :). И webus в правильном направлении копает.
эээээ... извиняюсь, дальше не могу эту тему обсуждать, не раскрывая корпоративной тайны :).
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33540789
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Балтика miksoftзачем ежесекундными? вполне достаточно один раз после успешных измененийЭто конечно верно. Но представте ситуацию, когда после получения сообщения одновременно сотня клиентов шлет одинаковые запросы к ЦБ.
К тому же это слишком трудоемко - таких клиентов создавать. При каждом изменении таблицы нужно проверять успешность сделанных изменений и затем слать сообщение об изменении этой таблицы. Можно конечно продумать какую-то универсальную ф-цию. Но уверяю Вас, есть выход проще :). И webus в правильном направлении копает.
эээээ... извиняюсь, дальше не могу эту тему обсуждать, не раскрывая корпоративной тайны :).
у меня такое ощущение, что Вы больше остальных осведомлены о внутренней организации проекта, которым занимается webus :)
а я пытаюсь что-то подсказать лишь исходя из того, что написано в форуме...
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33540973
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webus еще не забывайте, что недостаточно просто широковещать по UDP - так как это ненадежный протокол, следует организовать еще и подтверждение о получении, а также проверку насчет целостности информации и отсутствия искажений. То есть прижется некий протокол навернуть свой еще.

Если все это происходит под виндой - можно попробовать использловать mailslots, они широковещательные и более надежны, чем "голый" UDP.

НО через базу - гораздо лучше.
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33541309
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--.... а также проверку насчет целостности информации и отсутствия искажений....

А вот с этого места поподробнее...
какую такую целостность ?
какое такое отсутствие искажений ?

Т.е. я правильно Вас понимаю, что на CRC в пакете UDP протокол кладёт большой и толстый (если он не нул) ?

может документацию почитаем, вместо того, что бы сказки рассказывать ?


с уважением
(круглый)
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33541346
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
Т.е. я правильно Вас понимаю, что на CRC в пакете UDP протокол кладёт большой и толстый (если он не нул) ?

может документацию почитаем, вместо того, что бы сказки рассказывать ?
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33541359
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0 в протоколе UDP не обязательно использование контрольных сумм
Тем более, что операционноя система автора неизвестна => предполагаем худшее
и второе- не гарантируется порядок поступления пакетов. Впрочем, для данной ситуации порядок не важен - сообщение видимо короткое

вот и все сказки а точнее RTFM :-)
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33541411
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--в протоколе UDP не обязательно использование контрольных сумм
...и второе- не гарантируется порядок поступления пакетов. Впрочем, для данной ситуации порядок не важен - сообщение видимо короткое
вот и все сказки а точнее RTFM :-)

1) не обязательное - это НЕ значит, что НЕЛЬЗЯ !
2) а порядок пакетов разве влияет на их ЦЕЛОСТНОСТь ? :)

а по поводу отличий UDP от TCP того же, лишь в том, что UDP НЕ ГАРАНТИРУЕТ ДОСТАВКУ.

(круглый)
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33541476
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok02) а порядок пакетов разве влияет на их ЦЕЛОСТНОСТь ? :)
влияет на целостность данных.

kolobok0а по поводу отличий UDP от TCP того же, лишь в том, что UDP НЕ ГАРАНТИРУЕТ ДОСТАВКУ.
увы... совсем не лишь !
описание UDP занимает меньше трех страниц, TCP - 85, не считая оглавления.
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33541532
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ваще-то можно посадить сервер, который регистрирует клиентов разного типа, скажем клиентов типа А, обновляющих объект В (в общем случае - совокупность записей из разных таблиц), типа С, Д и т.д.
Когда кто-то обновляет объект В, сервер рассылает сообщение только клиентам типа А и т.д.
Пишется это не сложно, работает на сокетах. Логика сервера прозрачна и логика клиентов может быть ассоциирована с классами, отображающими объекты.
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33541563
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторне обязательное - это НЕ значит, что НЕЛЬЗЯ !
kolobok0 докладываю - что в _некоторых_ ОС это применяется, в _некоторых_ можно включить udp checksum через setsockopt, а некоторые_ игнорируют подсчет checksum
В этом можно легко убедиться, просто посмотрев отлавливаемые сниффером пакеты.
Соответственно, используя udp было бы неразумно доверять операционке в этом вопросе. Тем более, повторяю - мы не знаем, что за ось.

автора по поводу отличий UDP от TCP того же, лишь в том, что UDP НЕ ГАРАНТИРУЕТ ДОСТАВКУ.
RTFM про протоколы с установлением соединения и без оного :-) А потом уже - про tcp и udp
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33541570
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftа по поводу отличий UDP от TCP того же, лишь в том, что UDP НЕ ГАРАНТИРУЕТ ДОСТАВКУ.
увы... совсем не лишь !
описание UDP занимает меньше трех страниц, TCP - 85, не считая оглавления.[/quot]

в очередь, только...в очередь..
А теперь правильный вопрос...

ВЫШЕ СМОТРИМ...видим...извиняемси...
речь шла О ПАКЕТЕ !!! одном заметьте ! ШИРОКОВЕЩАТЕЛЬНОМ !
и обьясните мне дураку... Как на ЛИКВИДНОСТЬ в ШИРОВЕЩАТЕЛЬНОМ пакете влияет ОЧЕРЁДНОСТь ?

ну и ?
давайте лучше быстренько открывайте доки по протоколам и освежайте память...а то енто ни в какие ворота млин...


для тех кто в танке, и верит в сказки....
1) UDP не гарантирует доставку пакетов. Соответственно данные могут приходить упорядоченно, могут не упорядоченно, могут не приходить... УЕС ? Или опять бум спорить ?
2) На один отдельно взятый пакет - очерёдность НУ НИКАКИМ БОКОМ НЕ распространяеться... УЕС ? Или бум спорить ?
3) Если CRC заполнена в UDP - она проверяется (должна проверяться по спецификации). УЕС ? Или бум спорить ?

4) Странные у Вас подходы - о качестве материала судить по страницам... Вот по кол-ву страниц - не скажу, в своё время изучал материал, а не кол-во этих страниц :)


с уважением
(круглый)
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33541576
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--....Соответственно, используя udp было бы неразумно доверять операционке в этом вопросе. Тем более, повторяю - мы не знаем, что за ось....

возможно Вы правы...с точки зрения факта заполнения. Но тоды мы не можем доверять и другому функционалу операционок...например целостности данных считанных с диска... но это уже другая тема...

(круглый)
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33541596
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему? Целостность считанных данных как раз гарантируется. Как и целостность данных, приходящих по IP.
Скажем, контроллеры SCSI учитывают четность, контрольную сумму и время ожидания. И при проблемах - способны повторить чтение и снизить скорость передачи. Во всяком случае так в описаниях SCSI пртокола.
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33541624
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из того что у нас сделано - лучше пусть клиенты регистрируются в
в таблицу со следующими параметрами :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE [NtfConfig] 
(
	id   [int] IDENTITY ( 1 ,  1 ) NOT NULL PRIMARY KEY ,
	host [nvarchar] ( 255 ) NOT NULL ,
	proxy [nvarchar] ( 255 ) ,
	proxy_port [int] ,
	port [int] NOT NULL ,					-- port of address
	PID  [int] NOT NULL ,					-- process id (for info only)
	timeout [int] NOT NULL,					-- timeout for persistent notification
	stamp [datetime] NOT NULL DEFAULT (getutcdate()))

клиенты бы раз в 15 минут обновляли свою запись на предмет типа живы еще, а сервер раз в пол-часа удалял бы старых клиентов.
А при рассылки сообщений пользовался этой таблицы для конкретной рассылки, потому как клиент может сидеть 3а фаерволами и тогда широковещательная рассылка не сработает.

Из нашего опыта (а у нас многотысячные клиенты, фактов потери udp на сетях T1 не бывало).
Ну и на случай потери в каждом пакете при рассылке есть время последней рассылки сообщений. И также есть рассылка по таймеру каждые 20 сек - типа сервер жив. И если время время последней рассылки не совпало, то клиент можно попросить сервер до-переслать изменения с последней успешной передачи.
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33541639
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0ВЫШЕ СМОТРИМ...видим...извиняемси...
речь шла О ПАКЕТЕ !!! одном заметьте ! ШИРОКОВЕЩАТЕЛЬНОМ !
и обьясните мне дураку... Как на ЛИКВИДНОСТЬ в ШИРОВЕЩАТЕЛЬНОМ пакете влияет ОЧЕРЁДНОСТь ?
...
2) На один отдельно взятый пакет - очерёдность НУ НИКАКИМ БОКОМ НЕ распространяеться... УЕС ? Или бум спорить ?

покажите, где у автора темы идет речь о том, что пакет будет только один ?
kolobok0
4) Странные у Вас подходы - о качестве материала судить по страницам... Вот по кол-ву страниц - не скажу, в своё время изучал материал, а не кол-во этих страниц :)
это было лишь к тому, что Вы не правы в слове "лишь"
различие в материале мне известно :)
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33541648
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--почему? Целостность считанных данных как раз гарантируется. Как и целостность данных, приходящих по IP.
Скажем, контроллеры SCSI учитывают четность, контрольную сумму и время ожидания. И при проблемах - способны повторить чтение и снизить скорость передачи. Во всяком случае так в описаниях SCSI пртокола.

т.к. протокольный уровень - енто уровень ядра(драйвера, сама ось и прочее), и данный уровень ведёт себя не по закону(протокол) - то мона ожидать урезание (искажение) функционала и в другом месте данного ядра. Логично ? (как говорит одна девочка). Чтение с диска не ограничивается применяемым железом и протоколом нижнего уровня (уровня железа). Над ним ышо много всяких телодвижений. Например ось может положить на такую функциональность как чтение-после-записи. И всё. Вроде как быстро - меньше телодвижений. Вроде как работает.... но до первого сбоя...


лано...возвращаясь к баранам...
если идёт речь о серваке приложения - то существует такая вещь как регистрация/разрегистрация. Правда тут нуна оговориться, что это зависит от политики самого сервака. Но предположим, что такие фазы существуют. Тогда нам никто не мешает известить клиентов об изменениях оперируя учётными записями. Речь мона вести и об оптимизации данного функционала.

Что использовать на нижнем уровне - думаю тут предпочтение у каждого своё.

Говорить о БД, как о средстве синхронизации в данной схеме - мягко говоря странно. Первичен сервак приложения, а уж потом БД. И завязываться на реализацию более нижнего уровня (БД), на мой взгляд - сужение потенциальных возможностей. Нафига тоды вооще городить сервак приложения ?

с уважением
(круглый)
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33547707
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да!!!!
Давно я тут не был :) Столько разных мнений... Но все же раскрываю карты! Операционка на сервере Windows 2003 (в дальныйшем скорее всего переведем на Slackware Linux), операционка клиента - Windows XP :) Количество клиентов относительно не большое (максимум 10 машин). Поэтому нагрузка сети не особо возрастет при широковещательных пакетах. Хотя было хорошо подмечено, на клиентах стоят FireWall'ы. Не известно как они к этим пакетам отнесуться :) Идея на счет таблицы активных пользователей очень хорошо, тоже была такая мысля но тут она доработана. Тем более что ip-адреса клиентов известны. Всем спасибо, но тема пока еще не закрыта! Что же лучше UDP или TCP/IP ???
...
Рейтинг: 0 / 0
Широковещалка на TCPServer
    #33547745
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторна клиентах стоят FireWall'ы. Не известно как они к этим пакетам отнесуться
как настроите - так и отнесутся :-)

авторЧто же лучше UDP или TCP/IP не лучше - разные просто.

Лучше tcp в плане надежности. Но если широковещание - выбора нет.
UDP ненадежен по приведенным причинам. Хотя тот же checksum - конечно, kolobok0 совершенно правильно о нем сказал, но увы - его использование не гарантировано. Надо тестить, смотреть сниффером.
В некоторых стеках можно им управлять (опция сокета SO_NO_CHECK), не помню, есть ли оно в winsock.
Но по идее - в одном сегменте можно действительно этим пренебречь - Ethernet тоже вычисляет сумму и отбросит кривой пакет.
А вот оповещение о доставке точно самому надо делать, UDP за Вас это не сделает :-( Ну и если размер сообщения - упаси Аллах - превысит mtu - то придется и об очередности доставки заботиться.
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Широковещалка на TCPServer
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]