mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-18 01:05:54 +01:00
98 lines
2.7 KiB
ObjectPascal
98 lines
2.7 KiB
ObjectPascal
|
unit UDPServerClientForm;
|
||
|
|
||
|
interface
|
||
|
|
||
|
uses
|
||
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
||
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent,
|
||
|
IdUDPBase, IdUDPServer, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Samples.Spin,
|
||
|
IdGlobal, IdSocketHandle, LoggerPro.UDPSyslogAppender;
|
||
|
|
||
|
type
|
||
|
TFUDPServerClientForm = class(TForm)
|
||
|
IdUDPServer: TIdUDPServer;
|
||
|
Label1: TLabel;
|
||
|
Label2: TLabel;
|
||
|
Label3: TLabel;
|
||
|
UDPServerReceived: TMemo;
|
||
|
Panel1: TPanel;
|
||
|
UDPServerControl: TRadioGroup;
|
||
|
UDPClientControl: TRadioGroup;
|
||
|
UDPClientPort: TSpinEdit;
|
||
|
Label4: TLabel;
|
||
|
Label5: TLabel;
|
||
|
UDPServerPort: TSpinEdit;
|
||
|
UDPClientTimer: TTimer;
|
||
|
procedure UDPClientTimerTimer(Sender: TObject);
|
||
|
procedure UDPClientControlClick(Sender: TObject);
|
||
|
procedure UDPServerControlClick(Sender: TObject);
|
||
|
procedure IdUDPServerUDPRead(AThread: TIdUDPListenerThread;
|
||
|
const AData: TIdBytes; ABinding: TIdSocketHandle);
|
||
|
public
|
||
|
{ Public declarations }
|
||
|
end;
|
||
|
|
||
|
var
|
||
|
FUDPServerClientForm: TFUDPServerClientForm;
|
||
|
|
||
|
implementation
|
||
|
|
||
|
uses
|
||
|
LoggerPro, LoggerProConfig, Math;
|
||
|
|
||
|
const
|
||
|
STATUS_ON = 0;
|
||
|
STATUS_OFF = 1;
|
||
|
|
||
|
{$R *.dfm}
|
||
|
|
||
|
function GetPIDByHWND(const hWnd: THandle): THandle;
|
||
|
var
|
||
|
PID: DWORD;
|
||
|
begin
|
||
|
Result := 0;
|
||
|
if hWnd = 0 then Exit;
|
||
|
GetWindowThreadProcessID(hWnd, @PID);
|
||
|
Result := PID;
|
||
|
end;
|
||
|
|
||
|
procedure TFUDPServerClientForm.IdUDPServerUDPRead(
|
||
|
AThread: TIdUDPListenerThread; const AData: TIdBytes;
|
||
|
ABinding: TIdSocketHandle);
|
||
|
begin
|
||
|
UDPServerReceived.Lines.Add(BytesToString(AData, IndyTextEncoding_UTF8));
|
||
|
UDPServerReceived.Lines.Add('----------------');
|
||
|
SendMessage(UDPServerReceived.Handle, EM_LINESCROLL, 0, UDPServerReceived.Lines.Count);
|
||
|
end;
|
||
|
|
||
|
procedure TFUDPServerClientForm.UDPClientControlClick(Sender: TObject);
|
||
|
begin
|
||
|
UDPClientTimer.Enabled := UDPClientControl.ItemIndex = STATUS_ON;
|
||
|
if not UDPClientTimer.Enabled then Exit;
|
||
|
|
||
|
Appender.ProcID := IntToStr(GetPIDByHWND(Application.Handle));
|
||
|
Appender.Port := UDPClientPort.Value;
|
||
|
Appender.UserName := GetEnvironmentVariable('USERNAME');
|
||
|
Appender.HostName := GetEnvironmentVariable('COMPUTERNAME');
|
||
|
Appender.Application := ExtractFileName(ParamStr(0));
|
||
|
end;
|
||
|
|
||
|
procedure TFUDPServerClientForm.UDPClientTimerTimer(Sender: TObject);
|
||
|
begin
|
||
|
case RandomRange(0, 5) of
|
||
|
0: Log.Debug('debug message', 'DEBUG');
|
||
|
1: Log.Info('info message', 'INFO');
|
||
|
2: Log.Warn('warn message', 'WARN');
|
||
|
3: Log.Error('error message', 'ERROR');
|
||
|
4: Log.Info('Some Access Violation', 'INFO');
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
procedure TFUDPServerClientForm.UDPServerControlClick(Sender: TObject);
|
||
|
begin
|
||
|
IdUDPServer.Bindings[0].Port := UDPServerPort.Value;
|
||
|
IdUDPServer.Active := UDPServerControl.ItemIndex = STATUS_ON;
|
||
|
end;
|
||
|
|
||
|
end.
|