Hey Leute!
Habe da nen Problem hab eine kleine CLient - Server Applikation geschreiben, um auf meinen PC auf arbeit von Zuhause zugreifen kann. Ich wollte soeben eine FUnktion einbauen um Dateien zusenden. Die Verzeichnisse anzeigen kann ich , nur wenn ich die datei sozusagen downloaden will hab ich dann eine Datei auf dem PC die nur immero so 1,4 kb groß ist..hier mal der COde zu den Funktionen:
Ach noch zu erwänen ist dass ich von CLient zu Server connecte also der CLient ist auf Arbeit und der Server bei mir..also eine Art wie heißt das ..ich glaube Reverse oder so, damit ich meinen DynDns nutzen kann..so jetzt aber der COde!
Client
Delphi-Quellcode:
procedure TForm1.VerifyDataReceived(Data: string; Socket: TCustomWinSocket);
var
COMMAND,TMP_COMMAND, l, rc: Integer;
tmpAnswer, user, version:string;
Reg: TRegistry;
label Finish;
begin
COMMAND:=StrToIntDef(Copy(Data,1,3),-1);
if COMMAND < 0 then
begin
Exit;
end;
TMP_COMMAND := -1;
Data := Copy(Data,4,Length(Data));
if COMMAND = COMMAND_FILE then
begin
TMP_COMMAND := COMMAND_FILE;
tmpAnswer:=GetFile(Data);
goto Finish;
end else
--------------------------- Get FIle function
function TForm1.GetFile(const PathName: string): string;
var
fs : TFileStream;
begin
fs := TFileStream.Create(PathName, fmOpenRead or fmShareDenyWrite);
SetLength(Result, fs.Size);
fs.Read(Result[1], fs.Size);
fs.Free;
end;
--------------------------- Sende Methode (also damit werden die daten an server gesendet)
procedure TForm1.SendAnswer(COMMAND: Integer; strAnswer: string; Socket: TCustomWinSocket);
begin
try
Socket.SendText(FormatFloat('00#',COMMAND) + strAnswer);
except
Socket.Close;
end;
end;
Server
Delphi-Quellcode:
procedure TMainForm.VerifyData(Data: string);
var
COMMAND:integer;
begin
COMMAND := StrToIntDef(Copy(Data,1,3),-1);
if COMMAND < 0 then Exit;
Data := Copy(Data,4,Length(Data));
if COMMAND = COMMAND_FILE then
begin
Assert(FileForm <> nil);
(FileForm as TFilesForm).SetFileData(Data);
Exit;
end;
-------------------------------- Send Methode zu CLient
procedure TMainForm.SendCommand(COMMAND: Integer; Args: string);
begin
if ConnectionsListBox.itemindex <> -1 then
begin
if ServerSocket1.Active then
try
ConnectionID := ConnectionsListBox.Itemindex;
ServerSocket1.Socket.Connections[ConnectionID].SendText(FormatFloat('00#',COMMAND) + Args);
except
end else LogMemo.Lines.add('You''re not connected...');
end else showmessage('You must first select a client to send the command to');
end;
Vielleicht könnt ihr mir ja helfen wäre echt super!
Bis später!
Mfg Dr0mFr34K