Hallo Leute,
nachdem ich mich gestern mühsam in das Protokoll eingearbeitet habe, weil fast alles was man zu
Indy findet aus alten Versionen ist, dachte ich ich könnte damit abschließen
.
mein Problem ist dass bei der Übertragung von Daten immer vier Bytes fehlen
.
Woran könnte das liegen?
Client:
Delphi-Quellcode:
procedure TFileExchangeClientForm.SetClientState(aState : Boolean);
begin
if (aState = True) then
begin
IdTCPClient1.Connect;
end
else
begin
IdTCPClient1.Disconnect;
end;
end;
function ClientSendFile(AClient: TIdTCPClient; Filename: String): Boolean;
begin
AClient.IOHandler.LargeStream := True;
Result := True;
try
AClient.IOHandler.WriteFile(Filename);
except
Result := False;
end;
end;
procedure TFileExchangeClientForm.Button_SendStreamClick(Sender: TObject);
var
LSize: LongInt;
begin
IdTCPClient1.Host := '127.0.0.1';
IdTCPClient1.Port := 6000;
IdTCPClient1.Connect;
LSize := 0;
Memo1.Lines.Add('Versuche Stream zu Server zu schicken');
if (ClientSendFile(IdTCPClient1, FileNameEdit.Text) = False) then
begin
Memo1.Lines.Add('Buffer konnte nicht gesendet werden' +
FileNameEdit.Text);
Exit;
end
else
begin
Memo1.Lines.Add('Buffer wird gesendet an ' + FileNameEdit.Text);
end;
SetClientState(False);
end;
Server:
Delphi-Quellcode:
procedure TFileExchangeServerForm.IdTCPServer1Execute(AContext: TIdContext);
var
LSize: LongInt;
file1 : String;
begin
AContext.Connection.IOHandler.ReadTimeout := 9000;
file1:= SaveFileEdit.Text;
if (ServerReceiveFile(AContext, file1) = False ) then
begin
TIdNotify.NotifyMethod(ShowCannotGetFileErrorMessage);
Exit;
end;
TIdNotify.NotifyMethod(FileReceived);
end;
function ServerReceiveFile(AContext: TIdContext; ServerFilename: String): Boolean;
var
AStream: TFileStream;
begin
try
Result := True;
AStream := TFileStream.Create(ServerFilename, fmCreate + fmShareDenyNone);
try
AContext.Connection.IOHandler.ReadStream(AStream);
finally
FreeAndNil(AStream);
end;
except
Result := False;
end;
end;
mfg Marlon