AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Datei von TServerSocket zu TClientSocket und umgekehrt

Datei von TServerSocket zu TClientSocket und umgekehrt

Ein Thema von ghost007 · begonnen am 1. Feb 2006 · letzter Beitrag vom 13. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#1

Datei von TServerSocket zu TClientSocket und umgekehrt

  Alt 1. Feb 2006, 13:14
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.
Christian
  Mit Zitat antworten Zitat
Benutzerbild von retnyg
retnyg

Registriert seit: 11. Feb 2005
193 Beiträge
 
#2

Re: Datei von TServerSocket zu TClientSocket und umgekehrt

  Alt 1. Feb 2006, 13:20
http://www.dcw-group.net/dcw_menue/h..._dateitransfer
  Mit Zitat antworten Zitat
Benutzerbild von Dj_Base
Dj_Base

Registriert seit: 10. Aug 2004
Ort: Aachen
231 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Datei von TServerSocket zu TClientSocket und umgekehrt

  Alt 1. Feb 2006, 13:54
Hi!

Danke für den Link!

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
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#4

Re: Datei von TServerSocket zu TClientSocket und umgekehrt

  Alt 1. Feb 2006, 14:15
also, danke für deinen link, aber das tutorial funktioniert bei mir nicht
Christian
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#5

Re: Datei von TServerSocket zu TClientSocket und umgekehrt

  Alt 1. Feb 2006, 14:17
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.
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#6

Re: Datei von TServerSocket zu TClientSocket und umgekehrt

  Alt 1. Feb 2006, 14:46
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 = 'okthen
 Socket.SendBuf(sM.Memory^, sM.Size);
end;

end.
Christian
  Mit Zitat antworten Zitat
Benutzerbild von retnyg
retnyg

Registriert seit: 11. Feb 2005
193 Beiträge
 
#7

Re: Datei von TServerSocket zu TClientSocket und umgekehrt

  Alt 1. Feb 2006, 15:59
du hast das wichtigste vergessen, nämlich eine verbindung aufzubauen (.Open)

bei dem tut ist ein beispielprogramm dabei
  Mit Zitat antworten Zitat
Benutzerbild von ghost007
ghost007

Registriert seit: 31. Okt 2005
Ort: München
1.024 Beiträge
 
Delphi 7 Personal
 
#8

Re: Datei von TServerSocket zu TClientSocket und umgekehrt

  Alt 1. Feb 2006, 16:03
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?
Christian
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#9

Re: Datei von TServerSocket zu TClientSocket und umgekehrt

  Alt 1. Feb 2006, 16:05
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.
  Mit Zitat antworten Zitat
Benutzerbild von retnyg
retnyg

Registriert seit: 11. Feb 2005
193 Beiträge
 
#10

Re: Datei von TServerSocket zu TClientSocket und umgekehrt

  Alt 1. Feb 2006, 16:10
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 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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr.
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