Delphi-Quellcode:
procedure TForm1.TCPServerExecute(AContext: TIdContext);
var
AMessage : string;
Commands : TStringList;
First : string;
begin
AMessage := ReceiveMessage(AContext);
if AMessage = 'connect' then
begin
AnswerMessage(AContext, 'welcome');
end;
Split(' ', AMessage, Commands);
if Commands[0] = 'name' then
AnswerMessage(AContext, 'ok');
end;
function TForm1.ReceiveMessage: string;
begin
Result := TCPClient.IOHandler.ReadLn();
ReceivedMessage := Result;
end;
Das sieht böse aus
Der Server ruft in OnExecute ReceiveMessage auf und in ReceiveMessage wird auf den IOHandler des Clients zugegriffen. Der Servercode darf niemals direkt auf den Clientcode zugreifen, sondern muss seinen eigenen IOHandler verwenden:
Delphi-Quellcode:
procedure TForm1.TCPServerExecute(AContext: TIdContext);
var
AMessage : string;
Commands : TStringList;
First : string;
begin
AMessage := AContext.Connection.IOHandler.ReadLn;
if AMessage = 'connect' then
begin
...
end;