Recent

Author Topic: Problemas com o INDY 10  (Read 4156 times)

Emerson

  • New Member
  • *
  • Posts: 37
Problemas com o INDY 10
« on: March 24, 2021, 04:56:20 pm »
Boa tarde!

Estou criando um socket server e um client usando o INDY 10 mais estou com o seguinte problema:
No Windows funciona perfeitamente ao ativar o componente TCPServer, mais na compilação no Linux Mint, ocorre o seguinte error no momento de ativar o componente:
"Projeto SockServer elevou classe exceção 'RunError(232)'."
No endereço EBDEBC

Alguém já pegou este problema ou sabe como resolver?

Gustavo 'Gus' Carreno

  • Hero Member
  • *****
  • Posts: 1111
  • Professional amateur ;-P
Re: Problemas com o INDY 10
« Reply #1 on: March 25, 2021, 02:15:27 am »
Oies Emerson, boas,

Alguém já pegou este problema ou sabe como resolver?

A primeira coisa que me ocorre é um problema com SSL. No Linux Mint, como estão as libs do OpenSLL?
Outra seria verificar se a versão do Indy é a mesma no Windows e no Linux Mint.

Se tudo isto checar, estou perdido. Talvez um bocado do código seria bom?

Abraço,
Gus
Lazarus 3.99(main) FPC 3.3.1(main) Ubuntu 23.10 64b Dark Theme
Lazarus 3.0.0(stable) FPC 3.2.2(stable) Ubuntu 23.10 64b Dark Theme
http://github.com/gcarreno

Remy Lebeau

  • Hero Member
  • *****
  • Posts: 1312
    • Lebeau Software
Re: Problemas com o INDY 10
« Reply #2 on: March 25, 2021, 05:00:12 pm »
"Projeto SockServer elevou classe exceção 'RunError(232)'."

(Sorry, I don't speak Portuguese)

According to this post:

https://forum.lazarus.freepascal.org/index.php/topic,7017.msg32949.html#msg32949

Quote
Run time error 232 means that the threading supppoort is not enabled. It seems that the package that installs TIdIPWatch does not define -dUseCThreads in its usage options.

This is also documented:

http://www.freepascal.org/docs-html/user/userap4.html#x194-193000D

Quote
232 Threads not supported
Thread management relies on a separate driver on some operating systems (notably, Unixes). The unit with this driver needs to be specified on the uses clause of the program, preferably as the first unit (cthreads on unix).

So, in your project's main source, try adding this:

Code: Pascal  [Select][+][-]
  1. uses
  2.   {$IFDEF UNIX}
  3.   cthreads,
  4.   {$ENDIF}
  5.   ...;
« Last Edit: March 25, 2021, 05:03:39 pm by Remy Lebeau »
Remy Lebeau
Lebeau Software - Owner, Developer
Internet Direct (Indy) - Admin, Developer (Support forum)

Emerson

  • New Member
  • *
  • Posts: 37
Re: Problemas com o INDY 10
« Reply #3 on: March 25, 2021, 10:35:56 pm »
Olá pessoal!
Eu conferi todas informações:
1 - Lib SSL, ok
2 -   {$IFDEF UNIX}
        cthreads,
       {$ENDIF} ok
3 - Versão do Indy do Windows e do Linux foram instaladas diretamente do repositório online do Lazarus ambos na mesma versão, ok
Mesmo com estes teste, ainda não funcionou.

unit TelaSockServer;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
  IdTCPServer, IdCustomTCPServer, IdContext;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    IdTCPServer1: TIdTCPServer;
    procedure Button1Click(Sender: TObject);
    procedure IdTCPServer1Execute(AContext: TIdContext);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }


procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  v_comando_recebido: String;
  v_mensagem : string;
begin
  v_comando_recebido := AContext.Connection.Socket.ReadLn;
  v_mensagem := 'Certifico o recebimento do comando: ' + v_comando_recebido;
  AContext.Connection.Socket.WriteLn(v_mensagem);
  AContext.Connection.Disconnect;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IdTCPServer1.Active then
  begin
    IdTCPServer1.Active := false;
  end else
  begin
    IdTCPServer1.Active := true;
  end;
end;

end.

O meu código é bem simples. Defini no componente a porta 8080 e tentei ativar, mais sem sucesso!
O que será que estou fazendo de errado?

Remy Lebeau

  • Hero Member
  • *****
  • Posts: 1312
    • Lebeau Software
Re: Problemas com o INDY 10
« Reply #4 on: March 26, 2021, 01:58:45 am »
Are you still getting the same runtime error 232?  Or are you having a different problem now?  If so, what exactly?  The code you have provided looks fine mostly, although I don't see the cthreads unit in the uses clause.
Remy Lebeau
Lebeau Software - Owner, Developer
Internet Direct (Indy) - Admin, Developer (Support forum)

Gustavo 'Gus' Carreno

  • Hero Member
  • *****
  • Posts: 1111
  • Professional amateur ;-P
Re: Problemas com o INDY 10
« Reply #5 on: March 26, 2021, 02:16:05 am »
Oies Emerson,

Se não compreenderes alguma coisa que o Remy está a falar, por favor não hesites em me perguntar e eu estarei mais que disponível para traduzir.

"If you don't understand some things that Remy is talking about, please don't hesitate and ask me for a translation. I'll be more than willing to help"

Abraço,
Gus
Lazarus 3.99(main) FPC 3.3.1(main) Ubuntu 23.10 64b Dark Theme
Lazarus 3.0.0(stable) FPC 3.2.2(stable) Ubuntu 23.10 64b Dark Theme
http://github.com/gcarreno

Emerson

  • New Member
  • *
  • Posts: 37
Re: Problemas com o INDY 10
« Reply #6 on: March 26, 2021, 04:46:52 pm »
Are you still getting the same runtime error 232?  Or are you having a different problem now?  If so, what exactly?  The code you have provided looks fine mostly, although I don't see the cthreads unit in the uses clause.
Olá Remmy!

Sim ainda estou com o mesmo erro.
Não sei como resolver!
Obrigado pela atenção!

Remy Lebeau

  • Hero Member
  • *****
  • Posts: 1312
    • Lebeau Software
Re: Problemas com o INDY 10
« Reply #7 on: March 26, 2021, 05:00:05 pm »
Sim ainda estou com o mesmo erro.

Like I said earlier, error 232 means you are not enabling threading support in your project, and I don't see the cthreads unit in your uses clause, eg:

Code: Pascal  [Select][+][-]
  1. unit TelaSockServer;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   {$IFDEF UNIX}
  9.   cthreads, // <-- HERE!!
  10.   {$ENDIF}
  11.   Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
  12.   IdTCPServer, IdCustomTCPServer, IdContext;
  13.  
  14. type
  15.  
  16.   { TForm1 }
  17.  
  18.   TForm1 = class(TForm)
  19.     Button1: TButton;
  20.     IdTCPServer1: TIdTCPServer;
  21.     procedure Button1Click(Sender: TObject);
  22.     procedure IdTCPServer1Execute(AContext: TIdContext);
  23.   private
  24.  
  25.   public
  26.  
  27.   end;
  28.  
  29. var
  30.   Form1: TForm1;
  31.  
  32. implementation
  33.  
  34. {$R *.lfm}
  35.  
  36. { TForm1 }
  37.  
  38.  
  39. procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
  40. var
  41.   v_comando_recebido: String;
  42.   v_mensagem : string;
  43. begin
  44.   v_comando_recebido := AContext.Connection.Socket.ReadLn;
  45.   v_mensagem := 'Certifico o recebimento do comando: ' + v_comando_recebido;
  46.   AContext.Connection.Socket.WriteLn(v_mensagem);
  47.   AContext.Connection.Disconnect;
  48. end;
  49.  
  50. procedure TForm1.Button1Click(Sender: TObject);
  51. begin
  52.   if IdTCPServer1.Active then
  53.   begin
  54.     IdTCPServer1.Active := false;
  55.   end else
  56.   begin
  57.     IdTCPServer1.Active := true;
  58.   end;
  59. end;
  60.  
  61. end.
  62.  
Remy Lebeau
Lebeau Software - Owner, Developer
Internet Direct (Indy) - Admin, Developer (Support forum)

Fred vS

  • Hero Member
  • *****
  • Posts: 3158
    • StrumPract is the musicians best friend
Re: Problemas com o INDY 10
« Reply #8 on: March 26, 2021, 05:45:00 pm »
Opa Emerson!

Além das informações de Remy, você também deve adicionar "cthreads" em "program", seção "uses":

[EDIT] O arquivo "program" tem a extensão 'lpr' :  meuprograma.lpr

Code: Pascal  [Select][+][-]
  1. program meuprograma ;
  2. ...
  3. uses
  4.  {$ifdef unix} cthreads, {$endif} // aqui
  5.  
« Last Edit: March 26, 2021, 05:53:44 pm by Fred vS »
I use Lazarus 2.2.0 32/64 and FPC 3.2.2 32/64 on Debian 11 64 bit, Windows 10, Windows 7 32/64, Windows XP 32,  FreeBSD 64.
Widgetset: fpGUI, MSEgui, Win32, GTK2, Qt.

https://github.com/fredvs
https://gitlab.com/fredvs
https://codeberg.org/fredvs

Emerson

  • New Member
  • *
  • Posts: 37
Re: Problemas com o INDY 10
« Reply #9 on: March 26, 2021, 05:48:52 pm »
Sim ainda estou com o mesmo erro.

Like I said earlier, error 232 means you are not enabling threading support in your project, and I don't see the cthreads unit in your uses clause, eg:

Code: Pascal  [Select][+][-]
  1. unit TelaSockServer;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   {$IFDEF UNIX}
  9.   cthreads, // <-- HERE!!
  10.   {$ENDIF}
  11.   Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
  12.   IdTCPServer, IdCustomTCPServer, IdContext;
  13.  
  14. type
  15.  
  16.   { TForm1 }
  17.  
  18.   TForm1 = class(TForm)
  19.     Button1: TButton;
  20.     IdTCPServer1: TIdTCPServer;
  21.     procedure Button1Click(Sender: TObject);
  22.     procedure IdTCPServer1Execute(AContext: TIdContext);
  23.   private
  24.  
  25.   public
  26.  
  27.   end;
  28.  
  29. var
  30.   Form1: TForm1;
  31.  
  32. implementation
  33.  
  34. {$R *.lfm}
  35.  
  36. { TForm1 }
  37.  
  38.  
  39. procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
  40. var
  41.   v_comando_recebido: String;
  42.   v_mensagem : string;
  43. begin
  44.   v_comando_recebido := AContext.Connection.Socket.ReadLn;
  45.   v_mensagem := 'Certifico o recebimento do comando: ' + v_comando_recebido;
  46.   AContext.Connection.Socket.WriteLn(v_mensagem);
  47.   AContext.Connection.Disconnect;
  48. end;
  49.  
  50. procedure TForm1.Button1Click(Sender: TObject);
  51. begin
  52.   if IdTCPServer1.Active then
  53.   begin
  54.     IdTCPServer1.Active := false;
  55.   end else
  56.   begin
  57.     IdTCPServer1.Active := true;
  58.   end;
  59. end;
  60.  
  61. end.
  62.  

Olá!

Agora que eu inseri o código conforme você me instruiu, passou aparecer o seguinte erro logo no início da aplicação:
Projeto SockServer elevou classe exceção 'RunError(211)'.
No endereço EBF47C

Antes o erro 232 acontecia somente ao ativar o componetes, agora o erro 211 ocorre ao inicializar o form.

Desde já agradeço ajuda que você tem me prestado!

Fred vS

  • Hero Member
  • *****
  • Posts: 3158
    • StrumPract is the musicians best friend
Re: Problemas com o INDY 10
« Reply #10 on: March 26, 2021, 05:52:49 pm »
@Emerson:

Você leu meu post anterior?
I use Lazarus 2.2.0 32/64 and FPC 3.2.2 32/64 on Debian 11 64 bit, Windows 10, Windows 7 32/64, Windows XP 32,  FreeBSD 64.
Widgetset: fpGUI, MSEgui, Win32, GTK2, Qt.

https://github.com/fredvs
https://gitlab.com/fredvs
https://codeberg.org/fredvs

Emerson

  • New Member
  • *
  • Posts: 37
Re: Problemas com o INDY 10
« Reply #11 on: March 26, 2021, 05:54:29 pm »
Opa Emerson!

Além das informações de Remy, você também deve adicionar "cthreads" em "program", seção "uses":

Code: Pascal  [Select][+][-]
  1. program meuprograma ;
  2. ...
  3. uses
  4.  {$ifdef unix} cthreads, {$endif} // aqui
  5.  

Pessoal, deu certo!

As dicas do Remy e do Fred resolveu meu problema.
Muito obrigado pela ajuda pessoal, fico feliz em saber que o Lazarus tem uma comunidade onde todos ajudam! Mais uma vez muito obrigado!

Emerson

  • New Member
  • *
  • Posts: 37
Re: Problemas com o INDY 10
« Reply #12 on: March 26, 2021, 05:55:41 pm »
Oies Emerson,

Se não compreenderes alguma coisa que o Remy está a falar, por favor não hesites em me perguntar e eu estarei mais que disponível para traduzir.

"If you don't understand some things that Remy is talking about, please don't hesitate and ask me for a translation. I'll be more than willing to help"

Abraço,
Gus

gcarreno, obrigado por se colocar a disposição para traduzir, mais graças a Deus deu certinho!
Obrigado!

Gustavo 'Gus' Carreno

  • Hero Member
  • *****
  • Posts: 1111
  • Professional amateur ;-P
Re: Problemas com o INDY 10
« Reply #13 on: March 27, 2021, 07:39:41 am »
Oies Emerson,

gcarreno, obrigado por se colocar a disposição para traduzir, mais graças a Deus deu certinho!
Obrigado!

De nada. Sempre à disposição ;)
Estou contente que tudo deu certo!!

Grande abraço,
Gus
Lazarus 3.99(main) FPC 3.3.1(main) Ubuntu 23.10 64b Dark Theme
Lazarus 3.0.0(stable) FPC 3.2.2(stable) Ubuntu 23.10 64b Dark Theme
http://github.com/gcarreno

 

TinyPortal © 2005-2018