Hm, das ist mein aktueller Stand.
Delphi-Quellcode:
procedure TFormMain.TCPServerExecute(AContext: TIdContext);
var
Cli: TIdTCPClient;
Len: Cardinal;
Data: string;
InputStream: TStream;
begin
try
Cli := nil;
try
Cli := TIdTCPClient.Create(nil);
Cli.Host := 'www.google.de';
Cli.Port := 80;
Cli.Connect;
repeat
if not AContext.Connection.IOHandler.InputBufferIsEmpty then
begin
//Artikel
Len := AContext.Connection.IOHandler.InputBuffer.Size;
Data := AContext.Connection.IOHandler.ReadString(Len);
Cli.IOHandler.Write(Data);
//Mein zweiter Versuch
//InputStream:=TStream.Create;
//Len:=AContext.Connection.IOHandler.InputBuffer.Size;
//AContext.Connection.IOHandler.ReadStream(InputStream,Len,false);
//Cli.IOHandler.Write(InputStream,InputStream.Size);
//InputStream.Free;
end;
if Cli.IOHandler.InputBufferIsEmpty then
begin
//Artikel
Len := Cli.IOHandler.InputBuffer.Size;
Data := Cli.IOHandler.ReadString(Len);
AContext.Connection.IOHandler.Write(Data);
//Mein zweiter Versuch
//InputStream:=TStream.Create;
//Len:=cli.IOHandler.InputBuffer.Size;
//cli.IOHandler.ReadStream(InputStream,Len,false);
//AContext.Connection.IOHandler.Write(InputStream,InputStream.Size);
//InputStream.Free;
end;
Cli.IOHandler.CheckForDisconnect(False);
Cli.CheckForGracefulDisconnect(False);
AContext.Connection.IOHandler.CheckForDisconnect(False);
AContext.Connection.IOHandler.CheckForDisconnect(False);
//SleepEx(1, True);
until (not AContext.Connection.Connected) or (not Cli.Connected);
finally
if Assigned(Cli) then
begin
Cli.Disconnect;
Cli.Free
end;
AContext.Connection.Disconnect;
end;
except
end;
end;
Die Möglichkeit vom Artikel klappt leider nicht. Die Antwort vom Server ist nichts. Außerdem finde ich das sehr seltsam, dass diese Antwort in einen String gespeichert wird. Darunter mal mein Lösungsansatz ^^ Der klappt leider auch nicht. Es erscheint eine Fehlermeldung, die mir mit TStream.Seek nicht weiter hilft :/
Sieht jemand den Fehler?