Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

Indy_10 Как правильно отключить клиента?   Найти похожие ветки 

 
tytus ©   (2007-03-14 17:28) [0]

В клиенте пишу:
procedure TIdFmClient.Button2Click(Sender: TObject);
begin
if Client1.Connected then
 begin
   Client1.SendCmd("Quit",200);
 end;
end;

В сервере:
procedure TIdFmServer.Server1Execute(AContext: TIdContext);
var
 LCmd:string;
begin
LCmd:=Trim(AContext.Connection.Socket.ReadLn);
Memo1.Lines.Add(LCmd);
if UpperCase(LCmd)="QUIT" then
 begin
   AContext.Connection.Socket.WriteLn("200 Good bye");
   AContext.Connection.Disconnect;
 end;
end;

На клиенте в обработчике OnStatus:
procedure TIdFmClient.Client1Status(ASender: TObject;
 const AStatus: TIdStatus; const AStatusText: String);
begin
Memo1.Lines.Add(AStatusText);
SendMessage(Memo1.Handle,WM_VSCROLL,SB_BOTTOM,0);
end;

В клиенте в мемо не пишется " Disconnected", а если нажать второй раз на кнопку TIdFmClient.Button2Click , то пишет, что отключен - "Disconnected".
как правильно отключить клиента?


 
DVM ©   (2007-03-14 17:35) [1]


> tytus ©   (14.03.07 17:28)  

А ты в курсе, что TIdFmServer.Server1Execute будет выполняться не в контексте основного потока программы. И обращаться к Memo1 небезопасно?


 
tytus ©   (2007-03-14 17:37) [2]

>DVM ©   (14.03.07 17:35) [1]
А ты в курсе
а почему небезопасно?


 
DVM ©   (2007-03-14 17:40) [3]


> а почему небезопасно?

Потому что VCL потоконебезопасная. Типичная ошибка при использовании Инди.


 
tytus ©   (2007-03-14 17:43) [4]

А как насчет вопроса?


 
umbra ©   (2007-03-15 10:59) [5]

не совсем ясна логика действий. Если клиент говорит серверу, что он закрывает соединение, то все что должен сделать сервер - это закрыть соединение. А клиент, согласно сказанному, закрыть свое.

procedure TIdFmClient.Button2Click(Sender: TObject);
begin
if Client1.Connected then
begin
  Client1.SendCmd("Quit",200);
  client1.IOHandler.CloseGracefully;
  Client1.Disconnect;
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
8-1169034939
Vovan #2
2007-01-17 14:55
2007.11.11
Работа со звуком в Delphi


8-1168878219
Denis_ka
2007-01-15 19:23
2007.11.11
Караоке-проигрыватель


15-1191387880
oxffff
2007-10-03 09:04
2007.11.11
CodeGear RAD Studio 2007 – the Smart Alternative


11-1176370217
Dmitry___
2007-04-12 13:30
2007.11.11
Unicode и Memo.Selection


2-1192442287
Footballer
2007-10-15 13:58
2007.11.11
Блокировка нажатия клавиш