Zitat von
DataCool:
Ich hoffe ^das^ hat erstal ein groben Überblick/Denkanstoss geschaffen,
wie man sowas realisieren könnte.
Außerdem sollte im Servercode kein MessageDlg verwendet werden,
ein Server sollte selbstständig und OHNE Interaktion mit dem User laufen.
Am besten sogar ganz ohne
GUI als Dienst.
Greetz DataCool
naja, also das mit den Dialogen im Servercode habe ich bereits selber rausbekommen und entsprechend geändert.
Ich hab mir also mal deine
Unit "JFIndy10BaseClientData" nachgebaut und versucht zu implementieren. Dabei bin ich gleich auf ein Problem(chen) gestossen. Und zwar im OnExecute Event vom Servercode:
Delphi-Quellcode:
// Client-Daten zu auslesen
try
tmpClient := TClientData(AThread.Data);
except
AContext.Connection.Disconnect;
exit;
end;
Ich denke da hast du noch was von einer älteren
Indy-version vermischt. Habe einfach "AThread.Data" in "AContext.Data" geändert. Aber jetzt das eigentliche Problem(chen):
Delphi-Quellcode:
try
// Daten im Buffer ?
tmpClient.LastCmd := AContext.Connection.Socket.ReadLn(#$A,Settings.CmdReadTimeOut,Settings.CmdMaxLength);
except
tmpClient.LastCmd := '';
end;
Ich kann nicht auf "Settings" zugreiffen (Nicht def. Bezeichner)... woher genau soll das kommen? hab ich was verpasst?
Ansonsten finde ich den Ansatzt sehr gut und hoffe den so implementieren zu können das alles nach meinen Vorstellungen klappt.
Noch was, wieso soll das Ganze am besten ohne
GUI und noch besser als Dienst laufen?! Wenn ich ein anständiges
exception handling
mache sollte das doch kein Problem sein?!
Nun noch eine Frage zum Senden der Datei
Kann ich das jetzt so machen:
Delphi-Quellcode:
FStream := TFileStream.Create(uploadfilepath, fmOpenRead or fmShareDenyWrite);
TCPClient.Connect;
try
TCPClient.IOHandler.Write(Fstream,0,true);
finally
FreeAndNil(FStream);
end;
oder muss ich den Stream umwandeln? Wenn ja wie und in was? vielleicht so?:
Delphi-Quellcode:
// Send TCP Stream
procedure TForm1.TCPSendStream(Stream: TFileStream);
var
IdStream: TIdStream;
begin
IdStream:= TIdStream.Create;
IdStream.CopyFrom(Stream,SizeOf(Stream));
TCPClient.Connect;
TCPClient.IOHandler.
Write(IdStream,0,true);
TCPClient.Disconnect;
end;
Naja ich dank euch schon mal allen für die tolle Hilfe...
wär genial wenn ihr mich noch ein bisschen begleiten würdet, bis ich dann auf eigenen Füssen stehen kann... hehe