![]() |
Re: Ereignisse in der Konsole
Danke.
Zitat:
Zitat:
Trotzdem: Wo finde ich den/die "berkeley socket"s? Gruß, Alex |
Re: Ereignisse in der Konsole
Hallo Schwedenbitter.
Zitat:
![]() lg. Astat |
Re: Ereignisse in der Konsole
Also ich hab das ganze jetzt so gelöst und es läuft prima unter Wine. Die ereignisse werden ausgeführt ich bekomme keine Fehlermeldungen läuft stabil alles bestens.
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE} uses SysUtils, IdTCPServer, IdContext, IdBaseComponent, IdComponent; type TServer = class(TObject) IdTCPServer1: TIdTCPServer; procedure IdTCPServer1Execute(AThread: TIdContext); procedure IdTCPServer1Connect(AThread: TIdContext); private { Private declarations } constructor Create; public { Public declarations } end; Const Version = '0.02'; type TDynStringArray = Array of string; function Explode(const Separator, S :String; Limit :Integer = 0): TDynStringArray; var SepLen: Integer; F, P: PChar; begin SetLength(Result, 0); if (S = '') or (Limit < 0) then Exit; if Separator = '' then begin SetLength(Result, 1); Result[0] := S; Exit; end; SepLen := Length(Separator); P := PChar(S); while P^ <> #0 do begin F := P; P := AnsiStrPos(P, PChar(Separator)); if (P = nil) or ((Limit > 0) and (Length(Result) = Limit - 1)) then P := StrEnd(F); SetLength(Result, Length(Result) + 1); SetString(Result[High(Result)], F, P - F); F := P; if P = Separator then SetLength(Result, Length(Result) + 1); while (P^ <> #0) and (P - F < SepLen) do Inc(P); end; end; procedure TServer.IdTCPServer1Execute(AThread: TIdContext); var Data : String; StrArr : TDynStringArray; begin with AThread.Connection do begin Data := String(Socket.ReadLn); Data := Trim(Data); WriteLn(Data); if Length(Data) > 0 then begin StrArr := Explode('|', Data); if StrArr[0] = 'login' then begin if (StrArr[1] = 'test') and (StrArr[2] = '123') then begin Socket.WriteLn('login'); end else begin Socket.WriteLn('invalid'); end; end; end; end; end; procedure TServer.IdTCPServer1Connect(AThread: TIdContext); begin WriteLn('Client verbunden.'); end; constructor TServer.Create; begin inherited Create; WriteLn('#######################'); WriteLn('## ##'); WriteLn('## Masterserver '+version+' ##'); WriteLn('## ##'); WriteLn('#######################'); WriteLn(''); IdTCPServer1 := TIdTCPServer.Create(nil); WriteLn('Server wurde initialisiert.'); IdTCPServer1.DefaultPort := 5000; WriteLn('Server lauscht auf Port: '+InttoStr(IdTCPServer1.DefaultPort)); IdTCPServer1.TerminateWaitTime := 5000; IdTCPServer1.OnConnect := IdTCPServer1Connect; IdTCPServer1.OnExecute := IdTCPServer1Execute; end; var Server : TServer; begin Server := TServer.Create; Server.IdTCPServer1.Active := True; While True do sleep(60); end. ![]() Was mich jetzt noch interessieren würde währe wie ich einen TimeStamp in die ereignisse einbringen kann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz