Einzelnen Beitrag anzeigen

Dr0mFr34K

Registriert seit: 30. Jan 2007
5 Beiträge
 
Delphi 7 Enterprise
 
#1

Dateien Kommen nur teilweise an!

  Alt 9. Apr 2008, 21:32
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
  Mit Zitat antworten Zitat