![]() |
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. |
Re: Datei von TServerSocket zu TClientSocket und umgekehrt
|
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 |
Re: Datei von TServerSocket zu TClientSocket und umgekehrt
also, danke für deinen link, aber das tutorial funktioniert bei mir nicht :(
|
Re: Datei von TServerSocket zu TClientSocket und umgekehrt
Zitat:
|
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. |
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 |
Re: Datei von TServerSocket zu TClientSocket und umgekehrt
So baue ich bei meinem chatprogramm auch die verbindung auf.
Delphi-Quellcode:
Habe noch ein 2tes Problem, wenn man es so macht, muss man , wenn man einen router hat, den port freigeben.
procedure TForm1.Button1Click(Sender: TObject);
begin ClientSocket1.Active:=true; end; Gibt es auch eine Lösung, um dieses Problem zu umgehen? |
Re: Datei von TServerSocket zu TClientSocket und umgekehrt
Zitat:
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. |
Re: Datei von TServerSocket zu TClientSocket und umgekehrt
Zitat:
Zitat:
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 16:59 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