Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Dateiname<>Übergabe Client<->server (https://www.delphipraxis.net/21826-dateiname-uebergabe-client-server.html)

Vader 8. Mai 2004 19:57


Dateiname<>Übergabe Client<->server
 
hallo

hab da einen server und einen client (socks)
jetzt kann der client den server einen befehl schicken,
das der server eine bestimmte datei den client sendet
aber der hacken an der sache ist,diese bestimmte datei
steht im programmcode des servers.

jetzt möchte ich aber das der client den server sagt welche
datei er senden soll !!!


server
Code:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var orders : string;


begin
  orders := socket.ReceiveText;

   if orders = 'schicke' then                      
  begin
   Socket.SendStream(TFileStream.Create('c:\aa.txt', fmOpenRead or fmShareDenyWrite));
  end;

  end;
client
Code:
procedure TForm1.BefehlClick(Sender: TObject);
var orders : string;

begin

if Checkbox14.Checked = True then
  begin
    orders := 'schicke';
    Clientsocket1.Socket.SendText(orders);
  end;
wie könnte man das lösen

für jeden progammschnipsel wäre ich sehr dankbar


mfg vader

SirThornberry 8. Mai 2004 21:34

Re: Dateiname<>Übergabe Client<->server
 
du könntest es so abändern
Delphi-Quellcode:
procedure TForm1.BefehlClick(Sender: TObject);
var orders : string;
begin
  if Checkbox14.Checked = True then
  begin
    orders := 'schicke:c:\abc.txt';
    Clientsocket1.Socket.SendText(orders);
  end;
end;
und beim server dann
Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var orders : string;
begin
  orders := socket.ReceiveText;

  if pos('schicke:', orders) = 1 then                      
  begin
    Socket.SendStream(TFileStream.Create(copy(orders, 9, length(orders) - 8), fmOpenRead or fmShareDenyWrite));
  end;
end;
Ungetestet, soll auch nur nen lösungsansatz sein

Muetze1 9. Mai 2004 01:02

Re: Dateiname<>Übergabe Client<->server
 
Moin!

Immer wenn ich irgendwelche Client/ServerSocket Programme sehe, gehen alle davon aus, das ReceiveText auch immer direkt nur den Text enthält den man mit SendText losgeschickt hat. Keine kommt auf die Idee, das der String mal in Teilen ankommen kann oder mehr beinhalten kann (folgende, schon geschickte Daten).

Also, falls später mal Probleme in der Richtung auftreten: beachten...

MfG
Muetze1

Vader 9. Mai 2004 08:07

Re: Dateiname<>Übergabe Client<->server
 
hallo SirThornberry,


hab deinen code eingefügt und hat sich ohne fehler compillieren
lassen
aber wenn ich dann den befehl ausführe wird keine datei an den client gestreamt
wenn ich dann den server schließe kommt die windowsfehlermeldung "anwendung reagiert nicht und ist möglicherweise überlastet"


mfg vader

SirThornberry 9. Mai 2004 09:04

Re: Dateiname<>Übergabe Client<->server
 
@vader: Das sollte auch kein copy & Paste beispiel sein sondern nur ein Lösungsansatz

Vader 9. Mai 2004 14:26

Re: Dateiname<>Übergabe Client<->server
 
hallo SirThornberry

habe es so jetzt probiert aber ohne erfolg
ich schicke den dateinamen als zusätliche variable namens
"datei" typ string beim client
beim server hab ich ein zweites "socket.ReceiveText"
ich weiß nicht ob das schon der fehler ist
hab aber den variableninhalt weitergegeben in die variable
"test"
nun schicke ich den dateinamen zuerst was in "test abgelegt
wird (glaub ich halt ) und dann ruf ich die variable "test"
in der befehlszeile für datei streamen auf

Socket.SendStream(TFileStream.Create(test, fmOpenRead or fmShareDenyWrite));

dann schick ich den befehl fürs datei streamen.



client
Code:
procedure TForm1.Button3Click(Sender: TObject);
var orders : string;
    datei:string;
begin

 //////  Befehl an den Server Datei streamen

if Checkbox14.Checked = True then        
  begin
    orders := 'schicke';
    Clientsocket1.Socket.SendText(orders);
  end;


//////   Dateinamen in die Variable datei am Server ablegen


 if Checkbox17.Checked = True then      
  begin
    datei := 'c:\aa.txt';
    Clientsocket1.Socket.SendText(datei);
  end;
server
[code]procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var orders : string;
datei : string;
test : string;
begin
orders := socket.ReceiveText;
datei := socket.ReceiveText;
test := datei;

if orders = 'schicke' then
begin
Socket.SendStream(TFileStream.Create(test, fmOpenRead or fmShareDenyWrite));
end;

end;

aber es funzt nicht, wo liegt hier der fehler oder ist das absoluter blödsinn


mfg vader

Vader 10. Mai 2004 18:49

Re: Dateiname<>Übergabe Client<->server
 
hallo SirThornberry und an alle

nur kurz darüberblicken über meinem code
wäre tiefst verbunden, würde nur mehr diese option brauchen dann
wäre ich happy


mfg vader

Vader 13. Mai 2004 13:35

Re: Dateiname<>Übergabe Client<->server
 
kann mir da keiner weiterhelfen

mfg vader


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz