Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy IDTCP , wie an CLIENT senden? (https://www.delphipraxis.net/19153-indy-idtcp-wie-client-senden.html)

ronbrand 30. Mär 2004 09:37


Indy IDTCP , wie an CLIENT senden?
 
guten Tag, möglicherweise schon öfter hier mal angesprochen, eine Lösung habe ich -bisher- nicht gesehen. Mein Client / Server soll in lokalem Netzwerk laufen.

Das Problem: Wie sende ich zu einem Zeitpunkt X, der nicht vorhersehbar ist, eine kurze Message vom Server an einen bestimmten -natürlich vorher eingeloggten- Client ?

Die Demo von Indy "BasicClientServer" ist zwar sehr gut zu lesen, und funktioniert auch wunderbar, aber gesendet vom Server zum Client wird hier nur als Antwort auf eine Message des Clients innerhalb des Empfangs-Thread auf dem Server. Ist zwar nett und trägt auch zum Verständnis bei, ist aber nicht das was ich brauche. Der 2. wichtige Punkt wäre das Herausfinden der IP-Adresse des Clients, das ging doch mit den Standard-0815-Sockets von Delphi auch !! wie kann ich das auslesen? ist zwar ein minor problem, aber dennoch wäre es doch ziemlich hanebüchen, wenn ich die IP auf dem Client auslese, und dann per Anmeldung an den Server übermittle.

Fast hätte es geklappt. das Chat-Demo von Indy hätte eine 2 way Communication gehabt, leider fror der Client nach kurzer Zeit ein mit Sanduhr, (dabei hatten wir doch grad Sommer-Anfang *g*), ist auch viel zu gross für meine Zwecke. Muss ich vielleicht andere Komponenten nehmen? habe alle Demos von Indy durch, nix gefunden :(

wäre super wenn jemand 'ne Lösung hätte, das kann doch net so schwer sein, allerdings schwirrt mir der Kopp, such jetzt schon über 'ne woche :wall: , grrr...
Gruss Ron

DataCool 30. Mär 2004 12:19

Re: Indy IDTCP , wie an CLIENT senden?
 
Hi Roland,

ich weiß gar nicht wo Dein Problem ist !
Die IP bekomst Du mit :

AThread.Connection.Socket.Binding.PeerIP

Zu Deiner ersten Frage:
Das Indy Chat-Demo ist schon der richtige Weg, nur halt recht simple dargestellt.
Warum das Chat Demo einfriert, weiß ich jetzt auf die schnelle auch gerade nicht, das tat bei mir früher aber mal.

Ich würde übrings Deine 2-Way kommunikation auf 2 IdTcpServer verteilen :

Server 1:
Clients verbinden sich und warten auf Nachrichten vom Server, ähnlich wie im Chat-Demo.

Server 2:
Clients verbinden sich dynamisch, wenn Sie was zu sagen haben.

Oder was meint die allgemeinheit dazu ?

Gruß Data

ronbrand 30. Mär 2004 13:31

Re: Indy IDTCP , wie an CLIENT senden?
 
hallo Data. (wenn DU wüsstest was für ein Fan ich von dem "echten" Data bin, der von der Enterprise) :oops: ist ja gut, und danke, ich habs grad auch gefunden, wie ich die IP rauskrieg, das brachte mich übrigens auf was anderes, was auch der Grund für das Einfrieren des Chat-Demo sein könnte, nämlich die Indy-Version. kann sein dass ich da noch ma gucken muss, ich habe glaub ich mal die Dinger de-installiert...und wollte sie wieder ..hmm, weiss nicht mehr. vielleicht ist da was schief gegangen.

jedenfalls möchte noch mal drauf hinweisen, wenn der Server in der Lage ist, auf einen Client Request zu antworten, muss er doch wissen WOHIN er antwortet.
Wozu brauche ich dann also eine 2.te Verbindung?! :gruebel:
Leider bin ich noch zu "jung" mit dem ganzen TCP/IP Grabbel, sprich zu wenig Erfahrung. werde jetzt mal schnell einen Crashkurs in "wie-verwalte-ich-threads" machen.
Da scheint mir die Lösung versteckt zu sein.

Gruss Ron.
P.S dass mein Name falsch geschrieben wurde, (es ist "Ronald")nehm ich nach 27.435 mal niemand mehr übel :lol:

DataCool 30. Mär 2004 13:52

Re: Indy IDTCP , wie an CLIENT senden?
 
Hi Ronbrand,

hoffe ist jetzt richtig gewschrieben :oops:

Ich bin der Sache mit der Chat-Demo eben nochmal nachgegangen :

Es handelt sich wirklich um ein Versions-Problem !

In Delphi 5 mit den neusten Indys(9.0.14) geht alles einwandfrei.

In Delphi 6 mit den ausgelieferten Indys tritt das Hänger Problem auf.

Gruß Data

ronbrand 30. Mär 2004 14:27

Re: Indy IDTCP , wie an CLIENT senden?
 
hihi, "Ron" genügt völlig.
aber zur Sache, hm, jetzt habe ich ein Multitasking-Problem(mit mir selbst, Nicht mit Windows)mache ich nun mit meiner verordneten Eigenschulung weiter oder sause ich los und fange an, zu deinstallieren etc...
lese mir gerade das hier durch
http://www.pergolesi.demon.co.uk/pro...ad.Synchronize.

ist recht interessant, und auch hier im Forum sind echt viele wertvolle Anstösse, aber so richtig in die Maschine hämmern und zu sagen "jetzt brauch ich dies ahhh und hier muss ich noch das berücksichtigen" klappt noch nicht.
:(

eins ist mir mittlerweile klar, ohne threads wird das alles sowieso nicht gehen.
An anderer Stelle hier im Forum stand sinngemäss,

"man ist damit beschäftigt Aktion A,B,C zu machen und mittlerweile kommt eine neue ClientVerbindung rein? kein Problem, der neue Thread kümmert sich darum"

kann ich nur zustimmen. das An/Ab- melden der Clients ist das nicht das Problem, sondern der Verwaltungs-Kram der mit den Clients veranstaltet werden wird.
ich experimentier mal weiter, sobald ich's geschaft habe dass ich dem Client X was zuschicken kann poste ich das hier.
Ron
p.s. das Indy Beispiel "BasicClientServe" läuft unterdessen im Dauer-Test Betrieb, das verhält sich recht gut.

ronbrand 31. Mär 2004 09:22

Re: Indy IDTCP , wie an CLIENT senden?
 
hallo alle, ...grummel... schon oft war ich an der Stelle wo ich bei Delphi -vergeblich-die Nadel im Heuhaufen gesucht habe. Scheint wieder soweit zu sein. Gebe die Suche nach dem "Senden an den Client" auf, stattdessen werde ich ein weiteres Client Komponentchen auf meinen Server platzieren (arrrrgh...) und umgekehrt einen Server auf dem Client. Verwechslungen sind da hoffentlich nicht vorprogrammiert. :cry: scheint mir aber die einzige Wahl zu sein.
Ich hab das hier gelesen und 'n (Chat-)Demo gefunden, was auch prima funktionierte. So mach ich das jetzt, basta. Es sei denn, jemand findet in letzter Minute das Ei des Kolumbus. Werde dann posten, wie es funktioniert.
Gruss Ron

ronbrand 1. Apr 2004 15:36

Re: Indy IDTCP , wie an CLIENT senden?
 
Zitat:

Zitat von DataCool
Clients verbinden sich und warten auf Nachrichten vom Server...

hoffentlich nerve ich nicht, aber versetzen wir uns mal auf die Serverseite..wie um Himmels willen SENDE ich denn jetzt vom Server ausserhalb von
IdTCPServer1Execute(AThread: TIdPeerThread);?! ich studiere förmlich wie ein ...
1.) Delphi-Help
2.) Indy in Depth
3.) Foren
antwort keine. Geht das vielleicht nicht? Oder hab ich da einen gewaltigen Hänger?
Ron


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 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