【发布时间】:2016-07-02 23:41:34
【问题描述】:
我有一个实现 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.
【问题讨论】:
-
您为什么要将此作为新问题发布?您删除了关于同一主题的 previous question,而不是针对发布在其上的 cmets。您应该已经回答了上面的问题,以便重新打开它。
-
@RemyLebeau - 我已经输入了调试代码。我之前没有调试过代码。现在我认为我最关心的是如何能够使用 printf 进行调试,以便我可以更好地理解它并取得一些进展。
-
这仍然不是删除previous question的借口。仅仅因为它被搁置并不会使它无效。您被要求提供有关它的更多信息,但您没有这样做。 那个问题是关于端口问题的。 这个 问题是关于日志记录的。两个独立的问题,彼此无关,即使它们指的是相同的代码。
标签: delphi debugging tcp firemonkey indy