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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> чат с использованием Indy 
:(
    Опции темы
_Rin
Дата 12.9.2006, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пишу чат с использованием компонентов Indy.
Как я поняла, Indy-сервер выделяет каждому клиенту свой поток для обработки. 
Сообщения от каждого клиента, сервер выводит в поле Memo на форме.
Получается что каждый созданный сервером для клиента поток использует этот Memo.
Надо ли их как-то вручную синхронизировать (мьютексы, Synchronize() и т.д....).
Или я что-то путаю.
Помогите - плиз....

Код

procedure TServerForm.TCPServerExecute(AThread: TIdPeerThread);
var
 TempStream:TMemoryStream;
 Command:TStringList;
 i: integer;
begin
 TempStream:=TMemoryStream.Create;
 Command:=TStringList.Create;

 try
  TempStream.Clear;
  AThread.Connection.ReadStream(TempStream);
  UnFormedStream(TempStream);
  TempStream.Position:=0;

  Command.LoadFromStream(TempStream);

 // Здесь в процедуре PrintTerminal идет использование Memo-поля
 PrintTerminal(PClient(AThread.Data).DNS);
  for i:=0 to Command.Count-1 do PrintTerminal(Command[i]);

  Command.Clear;
  Command.Add('Сообщение принято');

  TempStream.Clear;
  Command.SaveToStream(TempStream);
  FormedStream(TempStream);
  AThread.Connection.WriteStream(TempStream,true,true);

  TempStream.Free;
  Command.Free;
  except
   TempStream.Free;
   Command.Free;
  end;
end;


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


Эксперт
****


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

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



В Indy Demos есть пример полноценного чата.

Добавлено @ 16:07 
Вот. Приаттачиваю.
PS. Синхронизация нужна.

Присоединённый файл ( Кол-во скачиваний: 29 )
Присоединённый файл  Chat.zip 15,40 Kb
PM MAIL   Вверх
_Rin
Дата 12.9.2006, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Indy Demos - это где
PM MAIL   Вверх
_hunter
Дата 12.9.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



это демки на офсайте
http://www.indyproject.org/Sockets/Demos/index.en.aspx


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
_Rin
Дата 12.9.2006, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Посмотрела исходники.
Наверное я туплю.
Не могу понять в чем заключается синхронизация потоков.
Если в -  tcpServer.Threads.LockList и tcpServer.Threads.UnlockList, то это не то.
У меня в программе я не пользуюсь tcpServer.Threads.
Мне нужно точно знать, надо ли синхронизировать доступ к одному Memo-полю, если в него пишут несколько потоков (мне так кажется).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

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

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

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

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

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


 




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


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

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