powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TServerSocket и TService
5 сообщений из 55, страница 3 из 3
TServerSocket и TService
    #39871245
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oklalex,

или наследовать свой класс потоков, который при создании нового потока будет передавать переменную Loop = False
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
constructor TIdThread.Create(ACreateSuspended: Boolean; ALoop: Boolean; const AName: string);
....
constructor TIdThreadWithTask.Create(ATask: TIdTask; const AName: string);
begin
  inherited Create(True, True, AName);
  FTask := ATask;
end;
.........
procedure TIdThread.Execute;
...............
              if Loop then begin
                while not Stopped do begin
                  try
                    Run;
                  except
                    on E: Exception do begin
                      if not HandleRunException(E) then begin
                        Terminate;
                        raise;
                      end;
                    end;
                  end;
                end;
              end else begin
                try
                  Run;
                except
                  on E: Exception do begin
                    if not HandleRunException(E) then begin
                      Terminate;
                      raise;
                    end;
                  end;
                end;
              end;
...
Рейтинг: 0 / 0
TServerSocket и TService
    #39871255
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oklalexИ тут есть очень сильная хотелка - как бы так "собрать" это сообщение в первом вызове OnExecute(), зациклив проверку буфера?
Просто встань на место сервера и посмотри на сообщение с его т.зр. Как ему определить, что клиент отстрелялся с данными?

Либо длина в заголовке, либо сигнатура окончания. Можно еще по таймауту ждать, но это ламерство.
...
Рейтинг: 0 / 0
TServerSocket и TService
    #39871260
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно весь сеанс обмена с сервером организовать в рамках одного вызова OnExecute.
...
Рейтинг: 0 / 0
TServerSocket и TService
    #39875724
oklalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, всем огромное спасибо за внимание и идеи. Прошу прощения, что сразу не ответил. Проблема решилась, перенес на Indy, в который раз убеждаюсь, что это очень продуманная вещь. Вкратце - проблему нашел и тут выше ее уже примерно озвучивали - множество соединений висит в состоянии Time_Wait, обычный TServerSocket это не переваривает, они "висят вечно" и в итоге все останавливается. При большой нагрузке очень быстро. При переносе на Indy сделал ручную проверку, живое ли соединение, и если нет, отключаю. Кстати, у Indy и на этот счет есть штатное решение - SetKeepAliveValues(). Все принимается в одном вызове OnExecute(), спасибо DmSer огромное за то, что навели на правильную идею и привели прототипы необходимых функций.
При желании, можно 100% подобное реализовать и с TServerSocket, но уже не стал заморачиваться и строить велосипеды
...
Рейтинг: 0 / 0
TServerSocket и TService
    #39875726
oklalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Василий 2oklalexИ тут есть очень сильная хотелка - как бы так "собрать" это сообщение в первом вызове OnExecute(), зациклив проверку буфера?
Просто встань на место сервера и посмотри на сообщение с его т.зр. Как ему определить, что клиент отстрелялся с данными?

Либо длина в заголовке, либо сигнатура окончания. Можно еще по таймауту ждать, но это ламерство.
Согласен полностью, если бы так было сделано - эта тема бы не возникла ) но клиенты многие написаны не мной и так, как Господь на душу положит ( поэтому пришлось подстроить таймауты и работать в условиях тех ограничений, в которые поставлен (
...
Рейтинг: 0 / 0
5 сообщений из 55, страница 3 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TServerSocket и TService
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]