also ich hab das folgendermassen gelöst:
aber bevor ich anfange noch ein punkt...
Code:
srv: TIdTCPServer;
cli: TIdTCPClient;
damit der code verständlich wird ;)
client-send code:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
cli.OpenWriteBuffer;
cli.WriteInteger(length('hello'));
cli.Write('hello');
cli.CloseWriteBuffer;
end;
server-code:
Delphi-Quellcode:
procedure TForm1.srvExecute(AThread: TIdPeerThread);
var
tmp: string;
begin
tmp := athread.Connection.ReadString(athread.Connection.ReadInteger);
if tmp = 'hello' then
begin
AThread.Connection.WriteInteger(length('helloagain'));
AThread.Connection.Write('helloagain');
end;
end;
client receive code:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
tmp: string;
begin
if cli.Connected then
begin
cli.ReadTimeout := 10; // WICHTIG !!! sonst hängt er sich auf ...
try
tmp := cli.ReadLn;
if length(tmp) > 0 then
showmessage(tmp);
except
//
end;
end;
end;
gibt dabei nur ein problem ...
jedes mal wenn der timer ausgelöst wird und keine daten zum client gesendet wurden, wird eine
exception ausgelöst ... sehr nerfig, wenn der timer auf 100 steht *fg*
also hab ich zum testen des projekts die delphi-exceptions ausgeschaltet ...
auch nicht die beste methode aber was anderes kommt mir jetzt nicht in den sinn...
greetz
-FastJack2