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