![]() |
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? |
Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
Mithilfe der Bindings. Jedes Binding repräsentiert einen Client.
|
Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
Könntest du mir dafür ein konkretes Beispiel geben?
|
Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
*PUSH*
|
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.
|
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. |
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. |
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. |
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. |
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 |
Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
Hi!
Das Problem sind die Indys... Die sind nicht eventgesteuert... Versuch mal ![]() Die Funktionieren sehr gut... Frank :coder: |
Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
Genau das habe ich gesucht, vielen Dank, die Komponente ist super!
|
Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
Zitat:
|
Re: Indy TCP: Wie schickt der Server eine Nachricht gezielt?
Schau doch mal in die Demos zu den Indy-Komponenten.
Da gibt es einen TCP-Chat, da kann man mit dem Server Nachrichten an einzelne Clients gezielt verschicken. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 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