Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy TCP: Wie schickt der Server eine Nachricht gezielt? (https://www.delphipraxis.net/81373-indy-tcp-wie-schickt-der-server-eine-nachricht-gezielt.html)

Stefan Hueg 25. Nov 2006 23:52


Indy TCP: Wie schickt der Server eine Nachricht gezielt?
 
Ich habe da ein kleines Problem. Und zwar habe ich ein kleines Client-Server Programm gebaut und bin dabei auf folgendes Problem gestoßen.

Der Verbindungsaufbau zwischen Client und Server klappt, sie können sich ereignisbasiert auch Daten hin und her schicken (Server schickt "Hallo", Client schickt "Hallo auch, ich bins Jochen", Server dann "Hallo Jochen"....nur als Beispiel).

Wie kann ich nun folgendes Szenario lösen? Ein Server, 3 Clients. Jeder der Clients verbindet sich zum Server, es folgt ein Handshaking. Der Server möchte nun an einen Client gezielt eine Nachricht senden. Wie kann man diese Nachricht nun gezielt adressieren?

3_of_8 26. Nov 2006 00:10

Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
 
Mithilfe der Bindings. Jedes Binding repräsentiert einen Client.

Stefan Hueg 26. Nov 2006 00:15

Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
 
Könntest du mir dafür ein konkretes Beispiel geben?

Stefan Hueg 2. Dez 2006 00:29

Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
 
*PUSH*

inherited 2. Dez 2006 09:24

Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
 
Das Problem ist, dass ein Client nicht merkt, wann ihm etwas geschickt wird. Dieser muss wissen wann und was ankommt. Du könntest zB den Client regelmäßig den Server fragen lassen ob was neues los ist und die Antwort auslesen.

Stefan Hueg 2. Dez 2006 10:31

Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
 
Das heisst, dass wenn der Server ne Nachricht an den Client schickt, keine Prozedur gefeuert wird? Also wird die Nachricht nur in eine Art Puffer geschrieben?

Ich weiss aber immernoch nicht wie das nun genau funktioniert mit dem gezielten Senden.

inherited 2. Dez 2006 10:33

Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
 
Genau.
Das könnte zB so ablaufen (Chatbeispiel)
Client fragt Server "Was neues"?
Server sagt Client: "Jo, 10 messages, achtung, ich schick sie!"
Client liest das aus, merkt: Aha, 10 nachrichten und liest 10 Zeilen ein.

Stefan Hueg 2. Dez 2006 18:59

Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
 
Irgendwie leuchtet mir das noch nicht ganz ein:

Die Indys sind doch nur eine Kapselung von Winsock. Werden Daten empfangen, hat Winsock hat eine Methode namens "DataArrival". Sowas müsste man in den Indies doch irgendwie wiederfinden können, oder geht es wirklich nur über diesen umständlichen Weg?

Konkret geht es um eine Internetcafé-Software und ich bin noch bei der Planung wie ich das Netzwerkinterface bastel. Vielleicht könnt ihr mir da helfen wie ich die Kommunikation gestalten kann, denn darum geht es ja bei meiner hier gestellten Frage.

alzaimar 4. Dez 2006 09:51

Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
 
Entweder machst du das über Polling (alle x Sekunden/Millisekunden nachfragen), oder jeder Client bekommt eben auch eine
Server-Komponente, und der Server bekommt eine Client-Komponente.

Wenn also dein Client etwas zum Server schickt, verwendet er seine TIdTCPClient-Komponente und der Server empfängt die mit seiner TIdTCPServer-Komponente.

Und wenn der Server was zum Client schicken will, macht er das über seine TIdTCPClient-Komponente und der Client empfängt das mit seiner TIdTCPServer-Komponente.

Ich bin da aber nicht der Spezi, denke mir aber, das das so funktionieren müsste.

Real_Thunder 4. Dez 2006 10:21

Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
 
Also mit den Indy's kenne ich mich nicht wirklich aus....
Ich benutze eigendlich nur die normalen Socket komponenten von delphi..
und dort habe ich es so gemacht.. das wenn sich ein client anmeldet, sich der server den socket (TCustomWinSocket) und einen wert zum zuordnen merkt..

und wenn der server nun eine geziehlte nachricht verschicken soll, wie z.b. beim privaten chat.. oder ähnlcichem.. dann kann man den record nach der jewailigen zuordnung durchsuchen und dann den dazugehörigen socket benutzen.

wenn dich diese methode interessiert, dann schreib einfach nochmal.. und ich gebe dir einige beispiele

MfG Real Thunder


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:21 Uhr.
Seite 1 von 2  1 2      

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