|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.12.2007, 16:45 | #1 |
Пользователь Подтвердите свой е-майл
Регистрация: 15.08.2007
Сообщений: 21
|
рассылка сообщений всем пользователям в чате, протокол UDP
В данный момент в чате использую ttcpclient-ttcpserver.
Сервер нужен для рассылки списка/статуса пользователей и т.п., сообщения ч/з него не проходят.. для отправки другому/другим клиенту/клиентам сообщ. польз. выбер его из списка... вот тут то и заковырка! получается что клиент рассылает одно и тоже сообщение выбранным пользователям несколько раз, думается, что проще было б использовать UDP, особенно это касается ПОСЫЛКИ СООБЩЕНИЯ ВСЕМ ПОЛЬЗОВАТЕЛЯМ, но т.к. я с ним не имел дела возникли вопросы: так я понимаю IP задается не полностью, например 85.194.xxx.xxx., а если у пользователя в начале не 85, а например 91, то как быть?.. в принципе - это и есть основная проблема . Последний раз редактировалось RKS; 13.12.2007 в 16:54. |
13.12.2007, 20:54 | #2 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
в каждой сети есть бродкаст адрес, на который тебе и надо посылать сообщение
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
14.12.2007, 03:49 | #3 |
Пользователь Подтвердите свой е-майл
Регистрация: 15.08.2007
Сообщений: 21
|
а если ето чат не для локалки, и народ подсоединяется из разных городов, как быть?
|
14.12.2007, 07:54 | #4 |
Банхаммер
Участник клуба
Регистрация: 17.02.2007
Сообщений: 1,754
|
ну тогда тебе надо делать с выделенным сервером или если все таки ты хочешь делать через UDP то вот тебе более гемороидальный способ...
берешь цикл, а точнее 3 цикла и для каждого указываешь с какого ip начинать... т.е. сматри for i:=85 to 91 do for j:=1 to 255 do for h:=1 ti 255 do begin udp.active:=false; udp.host:=inttostr(i)+'.'+inttostr( j)+'.'+inttosr(h)+'.255'; udp.active:=true; udp.sendtext('text'); end; ну это будет сильно грузить проц, долго будут идти собщения, но оно будет работать через udp... так что юзай сервер.. по другому никак нормально работать не будет.... |
14.12.2007, 09:24 | #5 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
А если не в нутри локальной сети то бродкаст пакеты на 80% не пройдут, что обуславливается политикой современных провайдеров по пропусканию и фильтрации трафика на пограничных маршрутизаторах. В этом случае вам необходимо хранить массив данных о пользователям и при попытке отправить сообщение нескольким ( или всем) пользователям идти по массиву и отправлять каждому
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
14.12.2007, 09:45 | #6 |
Пользователь Подтвердите свой е-майл
Регистрация: 15.08.2007
Сообщений: 21
|
Я тут подумал, вот у меня список(массив) IP, прогоняю по нему цикл, по ищу одинаковые первые "октеты" адреса, . например
если более 2 раз встречается 91.147.xxx.xxx, то отсылаю по маске 91.147.255.255, или 78.142.255.255, ну, а если встречается один раз, то и отправляем конкертно ему. ... конечно мне этот способ тож. не нравится, но как по другому осуществить отправку на множество адресов, я не знаю. мне кажется TCP в данном случае не подходит. прийдется слать на каждый адрес... Конечно можно ограничить количество клиентов =), но ето не дело. Последний раз редактировалось RKS; 14.12.2007 в 09:48. |
14.12.2007, 10:45 | #8 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Вы так и не поняли ? да большинство провайдеров не пропустят бродкаст на отличную от вашей сеть
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
14.12.2007, 15:19 | #9 | |
Пользователь Подтвердите свой е-майл
Регистрация: 15.08.2007
Сообщений: 21
|
Сервак то написан, он выполняет сервысные ф-ии: хранит данные о польз-х и все такое., эт я уже писал.
Цитата:
лана, так я некогда не прийдту к решениюю проблемы... Остановливаюсь на TCP, как я понимаю способ тормозной, но более эфективный чем UDP. или я всовсем тупень, =) . |
|
14.12.2007, 15:29 | #10 |
Пользователь Подтвердите свой е-майл
Регистрация: 15.08.2007
Сообщений: 21
|
и вот еще, когда клиент подкл. к клиенту, м/д ними уст-ся постоянное соединение., я тут подумал, а не лучше ли , соединяться в момент отправки сообщения, и тут же отсоед-ся.
........................ кто нить может примерно описать, как работает ася? а именно: какую роль вып-т сервера, проходят ли мессаги ч/з сервер, пока все. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перехват сообщений от Службы сообщений (Messenger) | SJMS | Win Api | 6 | 17.07.2008 10:26 |
Изменять файл нескольким пользователям одновременно | asale | Microsoft Office Excel | 2 | 20.04.2008 23:49 |
Skroll box в чате. | Dj_smart | Общие вопросы Delphi | 9 | 08.03.2008 09:34 |
Смайлы в чате. | Teen4jump | Общие вопросы Delphi | 5 | 05.03.2008 21:20 |
Пользователям WebMoney и Яндекс - ??? нужен ли 'патч' | Virtson | Свободное общение | 8 | 21.05.2007 12:43 |