Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.03.2013, 18:39
Nanotentacle Nanotentacle вне форума
Прохожий
 
Регистрация: 09.03.2013
Сообщения: 3
Репутация: 10
По умолчанию Ошибка при отправке сообщений

Добрый день, уважаемые форумчане.
Возникла такая проблема: в программе используется TServerSocket в режиме stNonBlocking, принимает сообщения и отправляет их в ответ. Также имеется процедура, которая циклично через Server.Socket.Connections[i].SendText отправляет данные клиентам:
Код:
procedure TGProcessing.Multicast(st: String; exceptClient: TGLNumber);
var i:Byte; temp:integer;
begin
if self.Count <= 0 then Exit;
 temp := 0;
 if length(st) > 0 then
 begin
  for i := 0 to self.Server.Socket.ActiveConnections - 1 do
  begin
   if self.Client[exceptClient].SocketHandle <> self.Server.Socket.Connections[i].Handle then
   temp := temp + self.Server.Socket.Connections[i].SendText(st);
  end;
 end;
 self.FSend := self.FSend + temp;
end;

В момент, если происходит отключение клиента, постоянно вываливается ошибка. Ошибка вываливается при обращении к self.Client в различных частях программы, но, как удалось установить, причина именно в отключении клиента. Сам экземпляр Client не удаляется, а уходит в пул, поэтому он заведомо существует. Даже если его не существует, везде стоят проверки if assigned (Client) then.

Поэтому возникают три вопроса:
1) почему возникает подобная ошибка?
2) как ее можно избежать?
3) поможет ли режим stThreadBlocking для решения проблемы? Пока что не берусь переписывать код, вдруг кто-то встречался с подобным, а делать теоретически бесполезную работу не хочется, не будучи уверенным.

Спасибо за ответы.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:06.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025