Autor |
Beitrag |
Aton
      
Beiträge: 125
Windows XP
D7 Enterprise
|
Verfasst: Fr 16.04.04 14:10
Liebes Forum,
ich weiß, dieses Thema gab es schon einhundert mal. Aber bei mir klappt es einfach nicht!
Erste Frage
Ist es vom Prinzip das gleiche, Dateien übers LAN oder übers Internet zu schicken? Hintergrund ist, dass es bei mir lokal (localhost) klappt, aber nicht mit meiner externen IP übers Internet.
Zweite Frage
Vielleicht sieht den Fehler jemand? Wenn ich beim Client die Internet-IP des Servers eingebe (z.B. von www.aida.uni-hannove...Adresse/Default.asp), kommt immer Verbindungs Time-Out! Die Firewall lässt den Server als Server zu und den Client (anderer Rechner) ins Internet.
Hier das Listing:
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:
| unit TransServer;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls, IdThreadMgr, IdThreadMgrDefault;
type TServerForm = class(TForm) Server: TIdTCPServer; CBServerAktiv: TCheckBox; IdThreadMgrDefault1: TIdThreadMgrDefault; procedure CBServerAktivClick(Sender: TObject); procedure ServerExecute(AThread: TIdPeerThread); private public end;
var ServerForm: TServerForm;
implementation
{$R *.dfm}
procedure TServerForm.CBServerAktivClick(Sender: TObject); begin Server.Active := CBServerAktiv.Checked; end;
procedure TServerForm.ServerExecute(AThread: TIdPeerThread); var FStream: TFileStream; begin FStream := TFileStream.Create('C:\server.tmp', fmOpenRead); try AThread.Connection.OpenWriteBuffer; AThread.Connection.WriteStream(FStream); AThread.Connection.CloseWriteBuffer; finally AThread.Connection.Disconnect; FStream.Free; end; end;
end. |
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:
| unit TransClient;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, ExtCtrls;
type TClientForm = class(TForm) CBClientAktiv: TCheckBox; Client: TIdTCPClient; Button1: TButton; PButtons: TPanel; Label1: TLabel; EHost: TEdit; procedure CBClientAktivClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure EHostChange(Sender: TObject); private public end;
var ClientForm: TClientForm;
implementation
{$R *.dfm}
procedure TClientForm.CBClientAktivClick(Sender: TObject); begin if CBClientAktiv.Checked then begin try Client.Connect(15000); except on E: Exception do MessageDlg ('Fehler beim Verbinden:'#13+ E.Message, mtError, [mbOk], 0); end; end else begin Client.Disconnect; end;
CBClientAktiv.Checked := Client.Connected; PButtons.Enabled := Client.Connected; end;
procedure TClientForm.Button1Click(Sender: TObject); var FStream: TFileStream; begin FStream := TFileStream.Create('C:\client.tmp', fmCreate); try Client.ReadStream(FStream, -1, True); FStream.Seek(0, soFromBeginning); finally FStream.Free; end; end;
procedure TClientForm.EHostChange(Sender: TObject); begin Client.Host := EHost.Text; end;
end. |
Wenn ich auf Button1 klicke, würde ich gern die Datei "server.tmp" empfangen....
Danke für die Mühen,
schönes Wochenende,
Jens.
|
|
hibbert
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: Mi 09.06.04 22:12
hi,
ich habe zwar keine Ahnung von Datei Streams, aber ich habe das mal getestet.
Ich habe mir aus deinen Quelltexten die Komponenten rausgesucht und versendet. Ich habe deine Quelltexte ebenfalls verwendet.
Beim Netzwerk gab es kein Problem.
Und als ich endlich einen freiwilligen an einem anderen PC gefunden habe, da wurde die Datei komplett und fehlerfrei übertragen...
Wichtig ist, dass die Client & Server auf dem gleichen Port laufen und dass du die Internet IP angibst (217.231.223.251).
Ebenfalls sollte der 2. Rechner nicht mit der gleichen IP wie der Server online sein (falls der Client dir Verbindung ins Internet über LAN herstellt.)
mehr kann ich dir zu diesem Zeitpunkt noch nicht berichten.
hibbert
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
|