簡體   English   中英

調試Delphi Firemonkey Indy TCP服務器

[英]Debugging Delphi Firemonkey Indy TCP Server

我有一個實現TCP服務器的Delphi Firemonkey應用程序。 服務器未按預期打開端口。 我可以看到該窗體已打開,但netstat顯示該端口未打開。 我現在正嘗試通過嘗試放置日志消息來調試此問題。

問題是我以前從未使用過Firemonkey。 我不確定在哪里可以看到日志消息。

我已經聲明了日志記錄服務。

LoggingService: IFMXLoggingService;

然后我初始化它

LoggingService := FMX.Platform.TPlatformServices.Current.GetPlatformService(IFMXLoggingService) as IFMXLoggingService;

然后在函數Tserver.Execute調用它,以確保它已執行。

if Assigned(LoggingService) then
  LoggingService.Log('TserverExecute !',[]);

我不確定在哪里期望輸出。 我檢查了各種調試終端,似乎無法在任何地方找到輸出字符串。 有人指出我做錯了那太好了嗎?

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Platform,
  IdCustomTCPServer, IdTCPServer, IdBaseComponent, IdComponent, IdUDPBase, IdContext,
  IdSocketHandle, IdUDPServer, FMX.Controls.Presentation, FMX.StdCtrls;

type
  TForm1 = class(TForm)
    TCPServer: TIdTCPServer;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TserverExecute(AContext: TIdContext);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  LoggingService: IFMXLoggingService;

implementation

{$R *.fmx}

procedure TForm1.FormCreate(Sender: TObject);
var
  Binding : TIdSocketHandle;
begin
  LoggingService := FMX.Platform.TPlatformServices.Current.GetPlatformService(IFMXLoggingService) as IFMXLoggingService;
  TCPServer.DefaultPort := 16000;
  TCPServer.Bindings.Clear;
  Binding := TCPServer.Bindings.Add;
  Binding.IP := '0.0.0.0';
  Binding.Port := 16000;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 TCPServer.Active := True;
end;

procedure TForm1.TserverExecute(AContext: TIdContext);
var
  C : String;
begin
  C := AContext.Connection.Socket.ReadLn();
  if Assigned(LoggingService) then
    LoggingService.Log('TserverExecute !',[]);
 if C = 'TESTSTRING' then
 begin
   AContext.Connection.Socket.Writeln('SENT');
 end;
end;

end.

我不確定在哪里期望輸出。

IFMXLoggingService.Log()的文檔說:

事件日志中顯示一條消息。

事件日志是IDE本身內部的一個窗口(“查看”>“調試Windows”>“事件日志”)。 它顯示在調試會話期間由應用程序生成的日志消息。 因此,您需要在調試器中運行Firemonkey應用程序,才能查看來自IFMXLoggingService的日志消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM