Autor Beitrag
NemesisoD
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Di 05.08.03 14:33 
Hi,

ich will ein Netzwerkprogramm schreiben, mit dem man Daten über netzwerk Downloaden kann. Texte verschicken funktioniert einwandfrei, aber wie kann ich ganze Daten von mehreren MB größe mit hilfe von TCPIP übertragen?

_________________
Wer nicht programmiert, der lebt nicht!
Hansi@OMG
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 304

Vista
Delphi 2006 Prof., Lazarus
BeitragVerfasst: Di 05.08.03 16:37 
Ich versuche das seit fast 4 Monaten, dass ist entweder unmöglich oder extrem schwierig, ich hab es zwar soweit gebracht, dass man 6 MB verschicken kann, aber mehr geht net.

_________________
Who doesn't know the Micrsoft developer "Mahatma Fatal Error"?
NemesisoD Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Di 05.08.03 18:19 
Würde es rein Theoretisch funktionieren wenn man Byte für Byte auslesen würde und dann senden?
Und anschließend auf den anderen Rechner wieder Byte für Byte zusammen setzen?

_________________
Wer nicht programmiert, der lebt nicht!
elysm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25


D6 Enter, D6 Pers, D7 Pro
BeitragVerfasst: Mi 06.08.03 10:47 
NemesisoD, eine frage: mit welchen kompo´s arbeitest du?

TServerSocket? oder mit der Indy-Koponente? oder mit den TCPClient/Server dingern? :?:

ich hab Delphi7 und wollte auch sowas ähnliches machen, ich hab aber nur tut´s (o.ä.) für die TServerSocket gefunden!
NemesisoD Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Mi 06.08.03 12:41 
Also ich benutze die TCPServer/Client, habe damit am besten erfahrung gemacht!

_________________
Wer nicht programmiert, der lebt nicht!
focus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187

XP, 2k, 98, Me
D6 Prof
BeitragVerfasst: Do 04.09.03 09:18 
damit hats bei mir einigermassen funktioniert getestet hab ich zumindest schon 35 mb dateien..

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
unit Unit2;
//==========================================================================
   interface
//==========================================================================
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp;

type
  TForm1 = class(TForm)
    ServerSocket1: TServerSocket;
    ClientSocket1: TClientSocket;
    Button1: TButton;
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ClientSocket1Disconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Button1Click(Sender: TObject);
  private
    FStream: TFileStream;
  public
  end;

var
  Form1: TForm1;
//==========================================================================
   implementation {$R *.dfm}
//==========================================================================
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket); 
var 
  iLen: Integer; 
  Bfr: Pointer; 
begin 
  iLen := Socket.ReceiveLength; 
  GetMem(Bfr, iLen); 
  try 
    Socket.ReceiveBuf(Bfr^, iLen); 
    FStream.Write(Bfr^, iLen);
  finally
    FreeMem(Bfr); 
  end
end
//--------------------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject); 
begin
  FStream := nil
end
//--------------------------------------------------------------------------
procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  if Assigned(FStream) then 
  begin 
    FStream.Free; 
    FStream := nil
  end
end;
//--------------------------------------------------------------------------
procedure TForm1.ClientSocket1Disconnect(Sender: TObject; 
  Socket: TCustomWinSocket); 
begin 
  if Assigned(FStream) then 
  begin 
    FStream.Free; 
    FStream := nil
  end
end;
//--------------------------------------------------------------------------
procedure TForm1.ClientSocket1Connect(Sender: TObject; 
  Socket: TCustomWinSocket);
begin 
  FStream := TFileStream.Create('c:\atest.txt', fmCreate or fmShareDenyWrite);
end;
//--------------------------------------------------------------------------
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; 
  Socket: TCustomWinSocket);
begin
  Socket.SendStream(TFileStream.Create('c:\btest.txt', fmOpenRead or fmShareDenyWrite));
end;
//--------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin 
  ServerSocket1.Active := True;
  ClientSocket1.Active := True;
end;

end.


[www.swissdelphicente...howcode.php?id=1072]

gruss
michael
blackbirdXXX

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Do 04.09.03 10:03 
Was heißst einigermaßen? Das die Datei halb ankommt. Hie und da fehlt ein bit? :D
Das erinnert mich an diesen Screenshot wo 'Datei anlöschen steht' 8)

_________________
Klein, schwarz und ärgert Techniker? Jumper!
focus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187

XP, 2k, 98, Me
D6 Prof
BeitragVerfasst: Fr 05.09.03 13:13 
;)
einigermassen heisst das ich das den code nur flüchtig getestet habe und bei der übertragung einer textdatei > 1mb immer in der zweiten zeile eine leerzeile eingefügt wurde.. keine ahnung woran das liegt
gruss
michael
G-man
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 258

Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
BeitragVerfasst: Di 09.09.03 16:07 
Ein Tutoriallink der den Datenaustausch beschreibr 8) : www.tutorials.delphi...e/indy/file004.shtml.

_________________
...To err is human, but to really foul things up requires a computer.