Autor |
Beitrag |
pigfacejoe
      
Beiträge: 332
Erhaltene Danke: 1
Win 10, Ubuntu
Delphi,Javascript, PHP, Java, Python
|
Verfasst: Do 28.09.06 17:19
Guten Tag zusammen,
Ich will ein Programm schreiben, mit dem ich den Inhalt eines memos an einen anderen PC senden kann.Also sozusagen einen Newsletter: Ich schreibe etwas in das memo und versende es an jeden, der mein programm auf seinem rechner hat.
Ist das irgendwie möglich?-Hab was von indy gehört und mir das einfach mal runter geladen, aber wenn man 0 Ahnung von indy hat, dann bringt das ja nix..^^
Also, ich freue mich über jede Antwort.
Vielen Dank.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 28.09.06 17:34
Moin!
pigfacejoe hat folgendes geschrieben: | Ich will ein Programm schreiben, mit dem ich den Inhalt eines memos an einen anderen PC senden kann.Also sozusagen einen Newsletter: Ich schreibe etwas in das memo und versende es an jeden, der mein programm auf seinem rechner hat.
Ist das irgendwie möglich? |
Ja, das ist möglich, auch mit den Indy-Komponenten.
Wenn du dich allerdings noch gar nicht mit Netzwerkprogrammierung beschäftigt hast, dann könnte es eventuell einfacher sein, sich (erst)mal mit den Socket-Komponenten zu beschäftigen. Damit kannst du hier einsteigen. Später kannst du ja jederzeit wieder auf den Indies aufsetzen.
Um die Antwort auf die sicher kommende Frage gleich vorwegzunehmen: ja, ich weiß, dass du keinen Chat programmieren willst, aber wenn du das kannst, dann kannst du auch dein Projekt umsetzen.  Also, erstmal mit den Grundlagen anfangen, dann weitermachen.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
pigfacejoe 
      
Beiträge: 332
Erhaltene Danke: 1
Win 10, Ubuntu
Delphi,Javascript, PHP, Java, Python
|
Verfasst: Do 28.09.06 17:57
So hab mir das jetzt komplett durchgelesen,ich weiss jetzt wie ich einen TClientSocket dynamisch erstellen kann, aber wie geht das mit dem TServerSocket(sry, ich hab echt 0 Plan^^)?
Gruss
Pigface
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 28.09.06 18:04
Moin!
pigfacejoe hat folgendes geschrieben: | So hab mir das jetzt komplett durchgelesen,ich weiss jetzt wie ich einen TClientSocket dynamisch erstellen kann, aber wie geht das mit dem TServerSocket(sry, ich hab echt 0 Plan^^)? |
In dem Tut-Beitrag am Ende sind Anhänge, da gibt es auch eine Version mit dynamisch erstellten Komponeten; falls du das meinst, weil du möglicherweise nur eine D7PE hast?
Oder habe ich dich falsch verstanden?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
pigfacejoe 
      
Beiträge: 332
Erhaltene Danke: 1
Win 10, Ubuntu
Delphi,Javascript, PHP, Java, Python
|
Verfasst: Do 28.09.06 18:23
Genau Richtig ich hab eine Dlphi 7 PE,
und unten bei 3. steht ja auch wie ich dann TClientSocket erstellen kann, ich wollte jetzt wissen wie ich denn TServerSocket erstellen kann.
Vielen Dank für die schnelle Antwort!
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 28.09.06 23:25
Moin!
pigfacejoe hat folgendes geschrieben: | und unten bei 3. steht ja auch wie ich dann TClientSocket erstellen kann, ich wollte jetzt wissen wie ich denn TServerSocket erstellen kann. |
Äh, aber das ist doch im gleichen Archiv drin (ChatBasics_dynKompo.zip), der Minimal-Chat mit Server und Client in der dynamischen Kompo-Version.
Oder versteh ich dich immer noch falsch?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
pigfacejoe 
      
Beiträge: 332
Erhaltene Danke: 1
Win 10, Ubuntu
Delphi,Javascript, PHP, Java, Python
|
Verfasst: Fr 29.09.06 16:16
Habe den Quelltext, den su geschrieben hast um TClientSocket dynamisch zu erstellen angepasst und nun kommt folgender fehler:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,ScktComp;
type TForm1 = class(TForm) procedure DynConnectEvent(Sender: TObject; Socket: TCustomWinSocket); procedure FormCreate(Sender: TObject); private public ClientSocket1: TClientSocket; end; |
[Fehler] Unit1.pas(11): Ungenügende Forward- oder External-Deklaration: 'TForm1.DynConnectEvent'
Moderiert von raziel: Delphi-Tags hinzugefügt
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 29.09.06 16:32
Moin!
a) Bitte die Delphi-Tags verwenden, damit der Quelltext vernünftig dargestellt wird.
b) Zum Fehler: Du hast ja auch keine entsprechende Prozedur geschrieben.  Also sagt dir der Compiler völlig zu Recht: da fehlt der Code!
Schau dir doch mal den Code aus dem Archiv genau an, da läuft das doch schon. Brauchst doch nur "nachzumachen".
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
pigfacejoe 
      
Beiträge: 332
Erhaltene Danke: 1
Win 10, Ubuntu
Delphi,Javascript, PHP, Java, Python
|
Verfasst: Fr 29.09.06 20:32
Ich bekomms irgendwie nicht hin..
Bn halt bei sowas ziemlich blöd.
Kann man sich die Komponenten nicht irgendwo downloaden ?
Oder bekomm ich die nicht sonstwo her?
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Sa 30.09.06 10:39
Moin!
pigfacejoe hat folgendes geschrieben: | Ich bekomms irgendwie nicht hin..
Bn halt bei sowas ziemlich blöd. |
Hm, ist eigentlich gar nicht soo schwer, wundert mich.  Nicht so schnell aufgeben...
pigfacejoe hat folgendes geschrieben: | Kann man sich die Komponenten nicht irgendwo downloaden ?
Oder bekomm ich die nicht sonstwo her? |
Ich weiß nicht, ob es irgendwo eine Downloadquelle für die dclsockets70.bpl gibt, aber wenn, dann ist es illegal.
Du kannst dir auch z.B. ein Buch kaufen, bei dem D7 dabei ist. Das sind meistens Pro-Versionen, die Zeitlich begrenzt sind. Da ist dann auch dieses Package dabei. So könntest du zumindest in der Testphase die Komponenten in der IDE verwenden.
Aber wie schon gesagt, das ist soo schwer nicht. Wo kommst du denn nicht weiter? Immernoch bei dem Fehler oben stecken geblieben?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
pigfacejoe 
      
Beiträge: 332
Erhaltene Danke: 1
Win 10, Ubuntu
Delphi,Javascript, PHP, Java, Python
|
Verfasst: Sa 30.09.06 11:05
Hi narses, vielen Dank für deine Geduld,
Aber ich habs jetzt mal mit indy probiert:
Also ich habe einen server und einen Client:
Der server hat folgenden 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:
| unit Main;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls;
type TForm1 = class(TForm) IdTCPServer1: TIdTCPServer; Button1: TButton; Button2: TButton; Memo1: TMemo; procedure IdTCPServer1Execute(AThread: TIdPeerThread); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private FSend: Boolean; public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread); begin
if FSend then begin AThread.Connection.WriteLn(memo1.text); FSend:=false; end; end;
procedure TForm1.Button2Click(Sender: TObject); begin FSend := False; end;
procedure TForm1.Button1Click(Sender: TObject); begin FSend := True; end;
procedure TForm1.FormCreate(Sender: TObject); begin IdTCPServer1.Active := True; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin IdTCPServer1.Active := False; end;
end. |
In memo1.text trage ich ein,was ich versenden will zu diesem client: 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:
| unit Unit13;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, StdCtrls, IdAntiFreezeBase, IdAntiFreeze;
type TForm13 = class(TForm) Memo1: TMemo; Client: TIdTCPClient; IdAntiFreeze1: TIdAntiFreeze; procedure FormActivate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private public end;
var Form13: TForm13;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm13.FormActivate(Sender: TObject);
begin memo1.text:=' '; if not fileexists('C:\hausaufgaben'+form1.label1.Caption) then begin with Client do begin Connect; if Connected then begin Memo1.Lines.Add(ReadLn('', 3000)); memo1.lines.SaveToFile('C:\hausaufgaben'+form1.label1.caption);
end; end; end else memo1.lines.loadfromfile('C:\hausaufgaben'+form1.label1.caption); end ;
procedure TForm13.FormClose(Sender: TObject; var Action: TCloseAction); begin client.Disconnect; end;
end. |
So, doch wenn meine Freunde, die nur den Client haben, zu meinem server verbinden sollten, kommt die Fehlermeldung mit "Socket Error #12323(zahl ausgedacht) und Connection refused" Wie kann ich dem Client mitteilen , dass er übers internet den server auf meinem pc anwählt?
Danke,
Cu
Pigface
|
|
pigfacejoe 
      
Beiträge: 332
Erhaltene Danke: 1
Win 10, Ubuntu
Delphi,Javascript, PHP, Java, Python
|
Verfasst: So 01.10.06 12:12
PS: Also wenn ich auf meinem Rechner Client und Server öffne, empfängt der server den Text den ich in memo1 im server eingebe nur azf anderen Rechnern nicht.Wie kann ich dem Client auf einem anderen Rechner jetzt klarmachen , dass er zu meinem Server auf meinem PC zugreift??
Cu
Pigface
|
|
pigfacejoe 
      
Beiträge: 332
Erhaltene Danke: 1
Win 10, Ubuntu
Delphi,Javascript, PHP, Java, Python
|
Verfasst: So 01.10.06 23:25
Könnte nicht jm pls da drüber schauen und mir sagen , wie ich dem Client mitteile, dass er auf dem server auf meinem PC zugreift?
Thx
Cu Pigface
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: So 01.10.06 23:33
In dem du hier die IP deines Rechners und dien ausgewählten Port angibst.
_________________ Markus Kinzler.
|
|
pigfacejoe 
      
Beiträge: 332
Erhaltene Danke: 1
Win 10, Ubuntu
Delphi,Javascript, PHP, Java, Python
|
Verfasst: Mo 02.10.06 00:01
Wie finde ich die IP von meinem rechner raus und wo muss ich diese dann eintragen?
Thx,
Pigface
|
|
pigfacejoe 
      
Beiträge: 332
Erhaltene Danke: 1
Win 10, Ubuntu
Delphi,Javascript, PHP, Java, Python
|
Verfasst: Mo 02.10.06 00:49
So Leute,
hab meine IP beim Client in Client.Host= Ip Adresse von meinem PC eingetragen
Eine neue fehlermeldung kommt jtzt bei meinem Freund:
"Connection Timed out"
Ich bin am Verzweifeln-Was mache ich falsch??-Es kann doch nicht so schwer sein ein memo-Inhalt zu verschicken..
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 02.10.06 00:54
Moin!
Wenn Router im Spiel sind, braucht der Router, in dessen Netz der Server läuft, noch ein Portforwarding (heißt manchmal auch Virtual Server).
//EDIT: Teste doch einfach mal mit den Chat-Anwendungen aus meinen Tuts (da sind ja fertige EXEcutables bei), damit muss es auf jeden Fall gehen. Wenn nicht, dann hast du ein Konfig-Problem mit deinem Netz (oder dein Kumpel).
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
Zuletzt bearbeitet von Narses am Mo 18.02.08 02:40, insgesamt 1-mal bearbeitet
|
|
pigfacejoe 
      
Beiträge: 332
Erhaltene Danke: 1
Win 10, Ubuntu
Delphi,Javascript, PHP, Java, Python
|
Verfasst: Mo 02.10.06 10:38
Also einen Router habe ich nicht ( mein Freund aber),
Ich habe mir Die Demo zu indy 9 heruntergeladen mit Client und server und gestern getestet.Bei dem Client, der nur mein Freund hat, steht die IP von meinem PC unter der Eigenschaft "Host" (Ich denke mal das das meine IP ist^^) So, ich schalte bei mir auf dem pc den Server auf "Active", dann erst connected mein Freund. Nach ca 30 sek. Kommt bei ihm die Fehlermeldung: "Connection Timed out"
Bevor ich die richtige IP im host stehen hatte, kam immer eine andere fehlermeldung , also denke ich dass der client ja irgendwie schon meinen PC gefunden hat.
Trotzdem kommt halt immer die Fehlermeldung.
Also ich habe 2PCs, die aber nicht durch Router verbunden sind (rentiert sich sowieso nicht^^)sie sind verbunden durch Devolo Microlink dLAN duo (über die steckdose).
Danke für deine Antwort!
CU
Pigface
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Mo 02.10.06 10:44
Welche IP hat dein Freund den angegeben, eine private IP oder die öffentlich Adresse, welche dein Provider dir zugewiesen hat?
_________________ Markus Kinzler.
|
|
pigfacejoe 
      
Beiträge: 332
Erhaltene Danke: 1
Win 10, Ubuntu
Delphi,Javascript, PHP, Java, Python
|
Verfasst: Mo 02.10.06 10:48
Mein Freund hat gar nichts angegeben , ich hab bevor ich ihm das Programm geschickt habe meine IP vom PC ngegeben (1.Gehen Sie über Start -> Ausführen -> Eingabe von "cmd" in die "Eingabeaufforderung".
2.Geben Sie im jetzt erscheinenden Fenster "ipconfig /all" ein und warten Sie etwas.
Dann habe ich die IP Adresse unter "ernet NIC" unter "DHCP aktiviert" genommen , Ist das die falsche?
|
|
|