Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Послать сообщение всем клиентам. Чат на Indy 
V
    Опции темы
_Rin
Дата 13.9.2006, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 12.9.2006

Репутация: нет
Всего: нет



Пишу чат на Indy.

Клиенты посылают сообщения серверу. 
Сервер выводит их у себя в Memo-поле с указанием от кого пришло.

Как серверу переслать сообщение, пришедшее от одного клиента, всем другим клиентам, чтобы они
тоже могли вывести его у себя на форме.

Помогите плизз!!!
http://forum.vingrad.ru/html/emoticons/qstn.gif
smile  

PM MAIL   Вверх
Snowy
Дата 13.9.2006, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Посмотри темы внизу страницы.
PM MAIL   Вверх
_Rin
Дата 13.9.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 12.9.2006

Репутация: нет
Всего: нет



Смотрела. Но все равно не понимаю.
Столкнулась с Indy первый раз.

Есть обработчик TCPServerExecute(AThread: TIdPeerThread);
Сервер получает сообщение от одного клиента, выводит его в Memo, а затем шлет ответ этому клиенту
о том, что все принял правильно.

Как сделать так, что бы это сообщение могли получить и другие клиенты, подсоединеные в данный момент к серверу (я знаю их IP и порты).


http://forum.vingrad.ru/html/emoticons/stena.gif
smile

PM MAIL   Вверх
Alexeis
Дата 13.9.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 2
Всего: 459



_Rin, Пробовала использовать адрес типа 192.168.0.255
такие сообщения обычно идут всем клиентам диапазона
192.168.0.0 - 192.168.0.254


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Snowy
Дата 13.9.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



У TIdTCPServer есть свойство Bindings - это и есть массив подключенных клиентов.
Выбирай нужного и шли что хочешь.
PM MAIL   Вверх
_Rin
Дата 13.9.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 12.9.2006

Репутация: нет
Всего: нет



Спасибо за помощь, я нашла подходящий пример и во всем разобралась.
Но возникла новая проблема.

Пытаюсь подключится к серверу, и периодически возникает ошибка Connection Closed Gracefully.
(именно периодически,  клиент может подсоединится и нормально, без ошибок).
В чем может быть причина, и как её устранить.

Код клиента:

Код

procedure TClientForm.Connect_to_Server();
begin
 try
  StatusBar1.Panels.Items[0].Text:='Есть соединение';
  MainMenu1.Items[0].Enabled:=false;
  TCPClient.Connect();

 except
  on E: Exception do
  begin
   MessageDlg(#13+E.Message,mtConfirmation,[mbOk],0);
   Memo2.Lines.Add(E.Message);

   if TCPClient.Connected=false then
   begin
    StatusBar1.Panels.Items[0].Text:='Нет соединения';
    Login.Enabled:=true;
    Password.Enabled:=true;
    SendButton.Enabled:=false;
    MainMenu1.Items[0].Enabled:=true;
   end;
  end;
 end
end;


Это сообщение отредактировал(а) Snowy - 13.9.2006, 15:01
PM MAIL   Вверх
Snowy
Дата 13.9.2006, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Модератор: Пожалуйста, используйте кнопку "Код" для выделения кода
А то я уже устал править за Вами все сообщения.

Смысл ошибки - не удалось подключиться.
Возможно сервер занят или у него ограничение по количеству подключений, или он просто не работает.
PM MAIL   Вверх
_Rin
Дата 13.9.2006, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 12.9.2006

Репутация: нет
Всего: нет



Ладушки: буду использовать Кнопку "Код".

На счет сервера:
- сервер работает (свойство Active - устанавливаю в true)
- сообщение может выскочить, даже если подключается первый клиент (то есть никаких других подключений у сервера нет). 
- ограничений на количество подоключений тоже нет.

Не знаю, в чем дело.
PM MAIL   Вверх
Snowy
Дата 13.9.2006, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(_Rin @  13.9.2006,  15:13 Найти цитируемый пост)
Не знаю, в чем дело.
Аналогично.
Может у сервера плохое настроение, голова болит...
Ну не хочет он принимать подключение.
Можно попробовать делать 3 попытки подключения вместо одной.
А так - гадание на кофейной гуще. Здесь всё совсем не очевидно.
Самая сложная в отлове ошибка - нестабильная. Может выскочить, а может и нет...
PM MAIL   Вверх
_Rin
Дата 13.9.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 12.9.2006

Репутация: нет
Всего: нет



Все заработало.
Ошибка была на строне сервера.

Выделение памяти надо было делать не GetMem/Free, а New/Dispose.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1038 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.