Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Datei von TServerSocket zu TClientSocket und umgekehrt (https://www.delphipraxis.net/62217-datei-von-tserversocket-zu-tclientsocket-und-umgekehrt.html)

ghost007 1. Feb 2006 13:14


Datei von TServerSocket zu TClientSocket und umgekehrt
 
Hallo,
ich habe jetzt schon fast alle treats unter in der suche durchgeschaut.
Aber ich hab keinen gefunden, den ich
a:verstanden habe
oder
b:der funktionierte

Also, ich will wie schon in der Überschrift erwähnt eine Datei vom ServerSocket zum Client und umgekehrt versenden, am besten mit process bar.

P.S. ich hab auch die indy 9 kompos zur verfügung.

retnyg 1. Feb 2006 13:20

Re: Datei von TServerSocket zu TClientSocket und umgekehrt
 
http://www.dcw-group.net/dcw_menue/h..._dateitransfer

Dj_Base 1. Feb 2006 13:54

Re: Datei von TServerSocket zu TClientSocket und umgekehrt
 
Hi!

Danke für den Link! :thumb:

Ich suche auch schon seit längerem ein brauchbares Tutorial, doch die bei DSDT und bei den Schweizern konnten mir nicht so richtig weiterhelfen...

Doch das Tutorial war mir bis jetzt unbekannt!

THX & CYA,
Dj_Base

ghost007 1. Feb 2006 14:15

Re: Datei von TServerSocket zu TClientSocket und umgekehrt
 
also, danke für deinen link, aber das tutorial funktioniert bei mir nicht :(

PierreB 1. Feb 2006 14:17

Re: Datei von TServerSocket zu TClientSocket und umgekehrt
 
Zitat:

Zitat von ghost007
also, danke für deinen link, aber das tutorial funktioniert bei mir nicht :(

Es wäre ungemein hilfreich wenn du mal sagen würdest was genau nicht funktioniert. :roll:

ghost007 1. Feb 2006 14:46

Re: Datei von TServerSocket zu TClientSocket und umgekehrt
 
achso, entschuldigung,
wenn ich auf übertragen klicke passiert nichts außer das sich der opendialog öffnet,
und wenn ich dnan nochmal auf den button klicke kommt "verbundung durch software getrennt" als fehler.
Hier noch der Code, den ich verwende:
Delphi-Quellcode:
var
  Form1: TForm1;
  sM, rM:TMemoryStream;
  Rec: Boolean = false;
  rSize: Int64;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active:=true;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Label1.Caption:='connected';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
ClientSocket1.Active:=false;
Label1.Caption:='disconnected';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
sM := TMemoryStream.Create;
rM := TMemoryStream.Create;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeAndNil(sM);
FreeAndNil(rM);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
 begin
  sM.LoadFromFile(OpenDialog1.FileName);
  ClientSocket1.Socket.SendText(IntToStr(sM.Size));
 end;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
 rL:integer;
begin
 rL:=Socket.ReceiveLength;
 If rL=0 then Exit;
 If Rec then
  begin
   Socket.ReceiveBuf(Pointer(Int64(rM.Memory) + rM.Position)^, rL);
   rM.Position :=rM.Position + rL;
    If rM.Position = rSize then
     begin
      rM.SaveToFile('C:\Recieve.txt');
      Rec := False;
     end
  end else begin
   rM.Size := StrToInt(Socket.ReceiveText);
   rM.SetSize(rSize);
   rM.Position := 0;
   Rec := true;
   Socket.SendText('ok');
  end;
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
If Socket.ReceiveText = 'ok' then
 Socket.SendBuf(sM.Memory^, sM.Size);
end;

end.

retnyg 1. Feb 2006 15:59

Re: Datei von TServerSocket zu TClientSocket und umgekehrt
 
du hast das wichtigste vergessen, nämlich eine verbindung aufzubauen (.Open)

bei dem tut ist ein beispielprogramm dabei

ghost007 1. Feb 2006 16:03

Re: Datei von TServerSocket zu TClientSocket und umgekehrt
 
So baue ich bei meinem chatprogramm auch die verbindung auf.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active:=true;
end;
Habe noch ein 2tes Problem, wenn man es so macht, muss man , wenn man einen router hat, den port freigeben.
Gibt es auch eine Lösung, um dieses Problem zu umgehen?

PierreB 1. Feb 2006 16:05

Re: Datei von TServerSocket zu TClientSocket und umgekehrt
 
Zitat:

Habe noch ein 2tes Problem, wenn man es so macht, muss man , wenn man einen router hat, den port freigeben.
Gibt es auch eine Lösung, um dieses Problem zu umgehen?
Sollte eigentlich nicht gehen, da der Router ja Schutz bieten soll und diesen kannst du nur sehr schwer umgehen.

Eine sehr unschöne Methode wäre es wenn du die ganze Sache auf Port 80 laufen lässt (der is meistens freigegeben), dafür kann es aber zu Problemen mit dem Internet (Surfen) kommen.

retnyg 1. Feb 2006 16:10

Re: Datei von TServerSocket zu TClientSocket und umgekehrt
 
Zitat:

Zitat von PierreB
Zitat:

Habe noch ein 2tes Problem, wenn man es so macht, muss man , wenn man einen router hat, den port freigeben.
Gibt es auch eine Lösung, um dieses Problem zu umgehen?
Sollte eigentlich nicht gehen, da der Router ja Schutz bieten soll und diesen kannst du nur sehr schwer umgehen.

wenn man auf localhost 127.0.0.1 connected braucht man ned über den router zu gehen

Zitat:

Zitat von PierreB
Eine sehr unschöne Methode wäre es wenn du die ganze Sache auf Port 80 laufen lässt (der is meistens freigegeben), dafür kann es aber zu Problemen mit dem Internet (Surfen) kommen.

unschön ? eher praktisch.
probleme kann es nur dann geben, wenn du einen webserver laufen hast.
port 80 lokal und remote sind 2 versch. dinge


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:27 Uhr.
Seite 1 von 2  1 2      

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