Delphi-PRAXiS
Seite 6 von 11   « Erste     456 78     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Einen Chat mit den Sockets programmieren (https://www.delphipraxis.net/21622-einen-chat-mit-den-sockets-programmieren.html)

Ultimator 9. Jan 2005 20:21

Re: Einen Chat mit den Sockets programmieren
 
Ungefähr hier ;-)

Äfan 9. Jan 2005 20:26

Re: Einen Chat mit den Sockets programmieren
 
Oh, bisschen daneben geschaut, aber ich habe es gelesen, nur net realisiert oder besser compiliert :-D :stupid: :nerd: :tongue: :hello:

greez

hardy1234 14. Feb 2005 04:10

Re: Einen Chat mit den Sockets programmieren
 
Ganz nett, nur

1. Warum immer die Indy's?
2. Warum das ganze immer mit Timern?

Ich hab das mit den Delphi7-Internetkomponenten realisiert und das vollständig Event-gesteuert und mit Threads veranstaltet. Allerdings ist hierfür ein Proxy-Server zu programmieren, der die Web-IP's der Clients vorhält. Schließlich soll das Ding ja auch im Internet funzen.

Notwendig ist hierfür:

1. Über www.dyndns.org oder www.no-ip.com sich einen Alias-Namen besorgen (kost nix)
2. Der Client muß sowohl eine TcpClient- und TcpServer-Komponente haben.

Nach anfänglichen Problemen mit den Delphi-Komponenten hab ich die Unit kopiert und noch ein paar Änderungen vorgenommen. Z.B. TcpCustomClient.ReadStream. Das funzt prima.
Etwas aufwendig ist die Kiste mit den Threads, das leidige Problem der Online-Hilfe bzw. dem Handbuch ist ja bekannt.

Ist der Server(Client) gestartet horcht der fröhlich am Port auf ankommende Nachrichten und erzeugt sofort einen Thread in dem die Vorverarbeitung stattfindet (eigenes IP-Protokoll nötig).
Damit der Client nun auch seine Web-IP bekommt sendet er eine Anforderung an den Proxy-Server der sofort mit der Web-IP antwortet. Das ganze natürlich verschlüsselt und mit einem Zertifikat versehen. Die Zeitabläufe entsprechen etwa einem normalen Ping, ca. 70-80 ms. Wenn das nix ist?

Der Server hält eine Firebird-Datenbank vor, in der die Web-IP's der Clients gespeichert werden und so für alle Clients mit dem entsprechenden Zertifikat weltweit vorgehalten werden. Sollte der Client zwischendurch seine Web-IP ändern, teilt er das per Thread allen Online-Clients selber mit. Da das über einen Thread läuft merkt der Anwender nichts davon. Das ist gar keine schwierige Übung, man sendet einfach einen Header mit dem entsprechenden Befehl und der Serversocket im empfangend Client hat automatisch die neue IP (Client.LookUpHostAddr(Client.HostName)). Vorbedingung ist lediglich, das der Nickname je Client eineindeutig ist.

Vorteil bei diser Vorgehensweise ist, das der Serversocket im Client nur dann etwas tut wenn er auch Daten empfängt. Ob der Client dann stundenlang nix tut oder nicht ist schißkujennum. Er belastet anders als beim IRC den Server(Proxy) nicht.

Besonders lustig ist bei der ganzen Sache, das die Kiste auch im internen Netzt klappt. Das einzige Problem, das ich noch lösen muß ist die Weiterleitung ins interne Netz wenn der Client von dort gesendet hat und die gemeinsame Web-IP benutzt um einen Client irgendwo auf der Welt zu erreichen.

Wenn jemand Spaß daran hat bei dem Projekt ein bißchen mit zu tun dann bei mir melden. Da ist noch ne Menge Arbeit dran. Das ganze ist auch bezüglich Threads und Netzwerk-Programmierung lehrreich und echt spannend.

Am Besten an der ganzen Sache ist, daß man das Website-Geschisse und den Browser nicht braucht. Das funzt mit nem ganz normalen Programm und damit sicherer und schneller als jedes Script das je könnte.

Ultimator 14. Feb 2005 12:46

Re: Einen Chat mit den Sockets programmieren
 
Ja, das ist auch eine gute Möglichkeit, aber ich wollte hier in dem Tutorial ja an einem einfachen, auch für Anfänger leicht nachzuvollziehenden Beispiel erklären, wie man die Sockets nutzt, um nen Chat zu schreiben ;-)

Klar, ich könnte das auch anders machen, aber dann würd es vermutlich nicht mehr den o.g. Bedingungen entsprechen ;-)

nico525 24. Mär 2005 12:49

Re: Einen Chat mit den Sockets programmieren
 
*netallesgenaudurchgelesen*
aber ich kann sagn irgendwie funzt der dwnload net *heul*
könnt ihr mir sagen wie as jetzt mit dem chat geht

Ultimator 24. Mär 2005 19:56

Re: Einen Chat mit den Sockets programmieren
 
Hmmm, also das mit dem separaten Link kann nicht mehr funktionieren, da ich meinen Webspace anderweitig nutze :mrgreen:

Aber hast du mal die angehängte PDF-Datei mit "Ziel speichern unter.." herunterzuladen versucht?
Bei mir klappt nämlich komischerweise alles :-|

nico525 24. Mär 2005 21:43

Re: Einen Chat mit den Sockets programmieren
 
geht net entweder hab ich keinen zugriff auf die datei oder si existiert net

Matrix Scripter 24. Mai 2005 00:33

Re: Einen Chat mit den Sockets programmieren
 
Holla!
Ich hab das Problem das im Memofeld des Clients nix steht.
Aber in dem des Servers schon...
Woran könnte das liegen?

mfG Matrix Scripter :angel:

alcaeus 24. Mai 2005 06:50

Re: Einen Chat mit den Sockets programmieren
 
Hallo Matrix Scripter,

wie ich im andern Thema geschrieben habe, musst du die Ereignisse zuweisen, wenn du die Sockets dynamisch erstellst, bzw. auch wenn du die Sockets zur Designtime auf die Form setzt, und die Ereignisse nicht im OI zuweist.
Hast du dies auch für TClientSocket.OnRead gemacht? Das OnClientRead-Ereignis ist ein Ereignis des ServerSockets, für das ClientSocket musst du noch eines schreiben.

Greetz
alcaeus

Matrix Scripter 24. Mai 2005 13:47

Re: Einen Chat mit den Sockets programmieren
 
Okay ist das dann
Delphi-Quellcode:
client.OnRead := clientRead;
? :oops:
Und steht das auch im Tutorial, wenn ja dann hab find ichs nicht^^

mfG Matrix Scripter


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:11 Uhr.
Seite 6 von 11   « Erste     456 78     Letzte »    

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