Size: a a a

2020 December 30

DB

Dmitry Belkevich in Delphi & Lazarus
Alfred 🏳️ Yait
Добрый вечер!
можно ли заюзать IdCmdTCPClient1 для приёма сообщений от сервера?
Можно. Работает отлично для нужного применения
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Alfred 🏳️ Yait
ок, а какое событие прослушивает ответ от сервера?
у IdCmdTCPClient1 нужно сделать пачку командных хэндлеров. согласно списка ожидаемых команд от сервера
источник

DB

Dmitry Belkevich in Delphi & Lazarus
CommandHandlers
источник

DB

Dmitry Belkevich in Delphi & Lazarus
вот например мой список (взаимодействие сервис <> гуй) через порт
источник

DB

Dmitry Belkevich in Delphi & Lazarus
источник

DB

Dmitry Belkevich in Delphi & Lazarus
после того, как клиент получит команду от сервера, сработает соответствующий хэндлер. прелесть командных сервера и клиента в том, что все команды в обе стороны обрабатываются полностью автоматически
источник

DB

Dmitry Belkevich in Delphi & Lazarus
у каждого хендлера своя пачка свойств и событие (OnCommand)
источник

DB

Dmitry Belkevich in Delphi & Lazarus
источник

DB

Dmitry Belkevich in Delphi & Lazarus
посылка команд серверу, утф8 оказывалась самой удобной кодировкой:

s1 := Utf8Encode(Command + IfThen(s <> '', #1 + s));
FClient.IOHandler.WriteLn(string(s1), IndyTextEncoding_UTF8);

FClient:       TIdCmdTCPClient;
s1: Utf8String;
источник

DB

Dmitry Belkevich in Delphi & Lazarus
список команд на серверной стороне
источник

DB

Dmitry Belkevich in Delphi & Lazarus
врятли у тебя их будет столько ) но даже столько вполне работает )
источник

DB

Dmitry Belkevich in Delphi & Lazarus
посылка команд клиенту на стороне сервера:

s1: Utf8String;
FCurrContext:       TIdContext;

s1 := Utf8Encode(Command + s));
FCurrContext.Connection.IOHandler.WriteLn(string(s1), IndyTextEncoding_UTF8);

procedure TDataModule3.IdCmdTCPServer1Connect(AContext: TIdContext);
begin
FCurrContext := AContext;
FCurrContext.Connection.IOHandler.MaxLineLength := MaxInt;
FConnected := True;
end;
источник

МС

Максим Сысоев... in Delphi & Lazarus
Dmitry Belkevich
посылка команд клиенту на стороне сервера:

s1: Utf8String;
FCurrContext:       TIdContext;

s1 := Utf8Encode(Command + s));
FCurrContext.Connection.IOHandler.WriteLn(string(s1), IndyTextEncoding_UTF8);

procedure TDataModule3.IdCmdTCPServer1Connect(AContext: TIdContext);
begin
FCurrContext := AContext;
FCurrContext.Connection.IOHandler.MaxLineLength := MaxInt;
FConnected := True;
end;
Это на лазарусе?
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Максим Сысоев
Это на лазарусе?
delphi, но если инди на лазарь поставить, то будет и там. инди работает везде
источник

DB

Dmitry Belkevich in Delphi & Lazarus
только что не уверен, что редакторы свойств подключатся. возможно руками придется прописывать
источник

МС

Максим Сысоев... in Delphi & Lazarus
Dmitry Belkevich
delphi, но если инди на лазарь поставить, то будет и там. инди работает везде
Вцл? Меня больше интересует в чем отображаешь переписку
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Максим Сысоев
Вцл? Меня больше интересует в чем отображаешь переписку
у меня не переписка )
источник

МС

Максим Сысоев... in Delphi & Lazarus
Эхх,ну ладно
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Dmitry Belkevich
вот например мой список (взаимодействие сервис <> гуй) через порт
повторю
источник

DB

Dmitry Belkevich in Delphi & Lazarus
это сетевая сторона. в целом я думаю вполне применимо для чата
источник