|
|
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
Привет всем! Такая проблема! Пишу клиент-серверное приложение с использованием MySQL. На серваке стоит MySQL.На жругих компах написаны клиенты.Так же на серваке болтаеться простенькая программа-сервер с использованием компонента idTCPServer. Когда с какого либо клиента посылаеться сообщение на TCPServer, надо чтобы он всем другим активным клиентам его переслал. Одним словом это сделано для того, чтобы когда один клиент внес изменения в БД все остальные без проблем бы обновились. Как заставить TCPServer отвечать не тому клиенту, что сообщение послал, а всем активным в данный момент ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2006, 20:24 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
Для широковешательных сообшений следует использовать протокол UDP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2006, 08:33 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
ИМХО ненадежно. Лучше сделать это средствами БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2006, 08:48 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
maytonИМХО ненадежно. Лучше сделать это средствами БД. присоединяюсь! кстати, широковещать вполне может сам клиент, который что-то изменил. сервер для этого совершенно не нужен. во-вторых, при таком методе оповещения будут проблемы, если будет запущено два клиентских приложения на одном компе - они не смогут оба открыть для прослушивания один и тот же порт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2006, 09:08 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
Спасибо все что откликнулись! Интересует тема на счет широковещательных udp-сообщений! Раскажите что да как!? А на счет запуске двух приложений на одном компе, это можно запретить программно в той же софтине.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 07:25 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
miksoft maytonИМХО ненадежно. Лучше сделать это средствами БД. присоединяюсь! кстати, широковещать вполне может сам клиент, который что-то изменил. сервер для этого совершенно не нужен. во-вторых, при таком методе оповещения будут проблемы, если будет запущено два клиентских приложения на одном компе - они не смогут оба открыть для прослушивания один и тот же порт.Клиент конечно широковещать может, но где гаранти что в базе не сработало какое-нибудь правило или триггер и никаких изменений не произошло? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 10:47 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
_БалтикаКлиент конечно широковещать может, но где гаранти что в базе не сработало какое-нибудь правило или триггер и никаких изменений не произошло? Так на сервере он же не из триггера, полагаю, широковещать собрался... Наверное, будет какое-то клиентское приложение, которое что-то там будет отслеживать...а если так, то функционал этого приложенения вполне можно втащить в основное клиентское приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 11:17 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
miksoft _БалтикаКлиент конечно широковещать может, но где гаранти что в базе не сработало какое-нибудь правило или триггер и никаких изменений не произошло? Так на сервере он же не из триггера, полагаю, широковещать собрался... Наверное, будет какое-то клиентское приложение, которое что-то там будет отслеживать...а если так, то функционал этого приложенения вполне можно втащить в основное клиентское приложение....и опять же грузить сетку ежесекундными запросами к центральной базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 11:20 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
да и саму базу тоже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 11:22 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
_Балтика...и опять же грузить сетку ежесекундными запросами к центральной базе. зачем ежесекундными? вполне достаточно один раз после успешных изменений ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 12:15 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
miksoftзачем ежесекундными? вполне достаточно один раз после успешных измененийЭто конечно верно. Но представте ситуацию, когда после получения сообщения одновременно сотня клиентов шлет одинаковые запросы к ЦБ. К тому же это слишком трудоемко - таких клиентов создавать. При каждом изменении таблицы нужно проверять успешность сделанных изменений и затем слать сообщение об изменении этой таблицы. Можно конечно продумать какую-то универсальную ф-цию. Но уверяю Вас, есть выход проще :). И webus в правильном направлении копает. эээээ... извиняюсь, дальше не могу эту тему обсуждать, не раскрывая корпоративной тайны :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 12:57 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
_Балтика miksoftзачем ежесекундными? вполне достаточно один раз после успешных измененийЭто конечно верно. Но представте ситуацию, когда после получения сообщения одновременно сотня клиентов шлет одинаковые запросы к ЦБ. К тому же это слишком трудоемко - таких клиентов создавать. При каждом изменении таблицы нужно проверять успешность сделанных изменений и затем слать сообщение об изменении этой таблицы. Можно конечно продумать какую-то универсальную ф-цию. Но уверяю Вас, есть выход проще :). И webus в правильном направлении копает. эээээ... извиняюсь, дальше не могу эту тему обсуждать, не раскрывая корпоративной тайны :). у меня такое ощущение, что Вы больше остальных осведомлены о внутренней организации проекта, которым занимается webus :) а я пытаюсь что-то подсказать лишь исходя из того, что написано в форуме... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 13:43 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
webus еще не забывайте, что недостаточно просто широковещать по UDP - так как это ненадежный протокол, следует организовать еще и подтверждение о получении, а также проверку насчет целостности информации и отсутствия искажений. То есть прижется некий протокол навернуть свой еще. Если все это происходит под виндой - можно попробовать использловать mailslots, они широковещательные и более надежны, чем "голый" UDP. НО через базу - гораздо лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 14:31 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
--null--.... а также проверку насчет целостности информации и отсутствия искажений.... А вот с этого места поподробнее... какую такую целостность ? какое такое отсутствие искажений ? Т.е. я правильно Вас понимаю, что на CRC в пакете UDP протокол кладёт большой и толстый (если он не нул) ? может документацию почитаем, вместо того, что бы сказки рассказывать ? с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 16:04 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 16:14 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
kolobok0 в протоколе UDP не обязательно использование контрольных сумм Тем более, что операционноя система автора неизвестна => предполагаем худшее и второе- не гарантируется порядок поступления пакетов. Впрочем, для данной ситуации порядок не важен - сообщение видимо короткое вот и все сказки а точнее RTFM :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 16:18 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
--null--в протоколе UDP не обязательно использование контрольных сумм ...и второе- не гарантируется порядок поступления пакетов. Впрочем, для данной ситуации порядок не важен - сообщение видимо короткое вот и все сказки а точнее RTFM :-) 1) не обязательное - это НЕ значит, что НЕЛЬЗЯ ! 2) а порядок пакетов разве влияет на их ЦЕЛОСТНОСТь ? :) а по поводу отличий UDP от TCP того же, лишь в том, что UDP НЕ ГАРАНТИРУЕТ ДОСТАВКУ. (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 16:34 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
kolobok02) а порядок пакетов разве влияет на их ЦЕЛОСТНОСТь ? :) влияет на целостность данных. kolobok0а по поводу отличий UDP от TCP того же, лишь в том, что UDP НЕ ГАРАНТИРУЕТ ДОСТАВКУ. увы... совсем не лишь ! описание UDP занимает меньше трех страниц, TCP - 85, не считая оглавления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 16:49 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
Ваще-то можно посадить сервер, который регистрирует клиентов разного типа, скажем клиентов типа А, обновляющих объект В (в общем случае - совокупность записей из разных таблиц), типа С, Д и т.д. Когда кто-то обновляет объект В, сервер рассылает сообщение только клиентам типа А и т.д. Пишется это не сложно, работает на сокетах. Логика сервера прозрачна и логика клиентов может быть ассоциирована с классами, отображающими объекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 17:06 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
авторне обязательное - это НЕ значит, что НЕЛЬЗЯ ! kolobok0 докладываю - что в _некоторых_ ОС это применяется, в _некоторых_ можно включить udp checksum через setsockopt, а некоторые_ игнорируют подсчет checksum В этом можно легко убедиться, просто посмотрев отлавливаемые сниффером пакеты. Соответственно, используя udp было бы неразумно доверять операционке в этом вопросе. Тем более, повторяю - мы не знаем, что за ось. автора по поводу отличий UDP от TCP того же, лишь в том, что UDP НЕ ГАРАНТИРУЕТ ДОСТАВКУ. RTFM про протоколы с установлением соединения и без оного :-) А потом уже - про tcp и udp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 17:14 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
miksoftа по поводу отличий UDP от TCP того же, лишь в том, что UDP НЕ ГАРАНТИРУЕТ ДОСТАВКУ. увы... совсем не лишь ! описание UDP занимает меньше трех страниц, TCP - 85, не считая оглавления.[/quot] в очередь, только...в очередь.. А теперь правильный вопрос... ВЫШЕ СМОТРИМ...видим...извиняемси... речь шла О ПАКЕТЕ !!! одном заметьте ! ШИРОКОВЕЩАТЕЛЬНОМ ! и обьясните мне дураку... Как на ЛИКВИДНОСТЬ в ШИРОВЕЩАТЕЛЬНОМ пакете влияет ОЧЕРЁДНОСТь ? ну и ? давайте лучше быстренько открывайте доки по протоколам и освежайте память...а то енто ни в какие ворота млин... для тех кто в танке, и верит в сказки.... 1) UDP не гарантирует доставку пакетов. Соответственно данные могут приходить упорядоченно, могут не упорядоченно, могут не приходить... УЕС ? Или опять бум спорить ? 2) На один отдельно взятый пакет - очерёдность НУ НИКАКИМ БОКОМ НЕ распространяеться... УЕС ? Или бум спорить ? 3) Если CRC заполнена в UDP - она проверяется (должна проверяться по спецификации). УЕС ? Или бум спорить ? 4) Странные у Вас подходы - о качестве материала судить по страницам... Вот по кол-ву страниц - не скажу, в своё время изучал материал, а не кол-во этих страниц :) с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 17:17 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
--null--....Соответственно, используя udp было бы неразумно доверять операционке в этом вопросе. Тем более, повторяю - мы не знаем, что за ось.... возможно Вы правы...с точки зрения факта заполнения. Но тоды мы не можем доверять и другому функционалу операционок...например целостности данных считанных с диска... но это уже другая тема... (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 17:22 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
почему? Целостность считанных данных как раз гарантируется. Как и целостность данных, приходящих по IP. Скажем, контроллеры SCSI учитывают четность, контрольную сумму и время ожидания. И при проблемах - способны повторить чтение и снизить скорость передачи. Во всяком случае так в описаниях SCSI пртокола. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 17:31 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
из того что у нас сделано - лучше пусть клиенты регистрируются в в таблицу со следующими параметрами : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. клиенты бы раз в 15 минут обновляли свою запись на предмет типа живы еще, а сервер раз в пол-часа удалял бы старых клиентов. А при рассылки сообщений пользовался этой таблицы для конкретной рассылки, потому как клиент может сидеть 3а фаерволами и тогда широковещательная рассылка не сработает. Из нашего опыта (а у нас многотысячные клиенты, фактов потери udp на сетях T1 не бывало). Ну и на случай потери в каждом пакете при рассылке есть время последней рассылки сообщений. И также есть рассылка по таймеру каждые 20 сек - типа сервер жив. И если время время последней рассылки не совпало, то клиент можно попросить сервер до-переслать изменения с последней успешной передачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 17:40 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
kolobok0ВЫШЕ СМОТРИМ...видим...извиняемси... речь шла О ПАКЕТЕ !!! одном заметьте ! ШИРОКОВЕЩАТЕЛЬНОМ ! и обьясните мне дураку... Как на ЛИКВИДНОСТЬ в ШИРОВЕЩАТЕЛЬНОМ пакете влияет ОЧЕРЁДНОСТь ? ... 2) На один отдельно взятый пакет - очерёдность НУ НИКАКИМ БОКОМ НЕ распространяеться... УЕС ? Или бум спорить ? покажите, где у автора темы идет речь о том, что пакет будет только один ? kolobok0 4) Странные у Вас подходы - о качестве материала судить по страницам... Вот по кол-ву страниц - не скажу, в своё время изучал материал, а не кол-во этих страниц :) это было лишь к тому, что Вы не правы в слове "лишь" различие в материале мне известно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 17:44 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
--null--почему? Целостность считанных данных как раз гарантируется. Как и целостность данных, приходящих по IP. Скажем, контроллеры SCSI учитывают четность, контрольную сумму и время ожидания. И при проблемах - способны повторить чтение и снизить скорость передачи. Во всяком случае так в описаниях SCSI пртокола. т.к. протокольный уровень - енто уровень ядра(драйвера, сама ось и прочее), и данный уровень ведёт себя не по закону(протокол) - то мона ожидать урезание (искажение) функционала и в другом месте данного ядра. Логично ? (как говорит одна девочка). Чтение с диска не ограничивается применяемым железом и протоколом нижнего уровня (уровня железа). Над ним ышо много всяких телодвижений. Например ось может положить на такую функциональность как чтение-после-записи. И всё. Вроде как быстро - меньше телодвижений. Вроде как работает.... но до первого сбоя... лано...возвращаясь к баранам... если идёт речь о серваке приложения - то существует такая вещь как регистрация/разрегистрация. Правда тут нуна оговориться, что это зависит от политики самого сервака. Но предположим, что такие фазы существуют. Тогда нам никто не мешает известить клиентов об изменениях оперируя учётными записями. Речь мона вести и об оптимизации данного функционала. Что использовать на нижнем уровне - думаю тут предпочтение у каждого своё. Говорить о БД, как о средстве синхронизации в данной схеме - мягко говоря странно. Первичен сервак приложения, а уж потом БД. И завязываться на реализацию более нижнего уровня (БД), на мой взгляд - сужение потенциальных возможностей. Нафига тоды вооще городить сервак приложения ? с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2006, 17:50 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
Да!!!! Давно я тут не был :) Столько разных мнений... Но все же раскрываю карты! Операционка на сервере Windows 2003 (в дальныйшем скорее всего переведем на Slackware Linux), операционка клиента - Windows XP :) Количество клиентов относительно не большое (максимум 10 машин). Поэтому нагрузка сети не особо возрастет при широковещательных пакетах. Хотя было хорошо подмечено, на клиентах стоят FireWall'ы. Не известно как они к этим пакетам отнесуться :) Идея на счет таблицы активных пользователей очень хорошо, тоже была такая мысля но тут она доработана. Тем более что ip-адреса клиентов известны. Всем спасибо, но тема пока еще не закрыта! Что же лучше UDP или TCP/IP ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 22:27 |
|
||
|
Широковещалка на TCPServer
|
|||
|---|---|---|---|
|
#18+
авторна клиентах стоят FireWall'ы. Не известно как они к этим пакетам отнесуться как настроите - так и отнесутся :-) авторЧто же лучше UDP или TCP/IP не лучше - разные просто. Лучше tcp в плане надежности. Но если широковещание - выбора нет. UDP ненадежен по приведенным причинам. Хотя тот же checksum - конечно, kolobok0 совершенно правильно о нем сказал, но увы - его использование не гарантировано. Надо тестить, смотреть сниффером. В некоторых стеках можно им управлять (опция сокета SO_NO_CHECK), не помню, есть ли оно в winsock. Но по идее - в одном сегменте можно действительно этим пренебречь - Ethernet тоже вычисляет сумму и отбросит кривой пакет. А вот оповещение о доставке точно самому надо делать, UDP за Вас это не сделает :-( Ну и если размер сообщения - упаси Аллах - превысит mtu - то придется и об очередности доставки заботиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2006, 23:07 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2031928]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
77ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 444ms |

| 0 / 0 |
