Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Nachrichten vom Server an Clients verschicken
irfasirfas
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

Nachrichten vom Server an Clients verschicken

beantworten | zitieren | melden

Hallo!

Bin zur Zeit mit einer Client-Server Anwendung beschäftigt.
Habe jetzt rausgefunden, wie Clients mit dem Server kommunizierren können und das funktioniert auch.

Die Frage ist ist: Wie kann der Server alle oder betimmte Clients benachrichtigen, dass sie bestimmte Events ausführen (refresh z.B). Habe irgendwo gelesen, dass könnte mit Messaging gehen, aber was brauche ich dafür beim Server und dem Client? Und gibt es andere Alternativen?

Danke!!
private Nachricht | Beiträge des Benutzers
Seyyedi
myCSharp.de - Member

Avatar #avatar-2412.png


Dabei seit:
Beiträge: 184

beantworten | zitieren | melden

Hallo irfasirfas,

das hängt natürlich stark davon ab wie deine Anwendung arbeitet. Wie sind die Clients mit dem Server verbunden? Wie handelts du die Verbindung zwischen einem Client und dem Server?

Ein bisschen Code würde auch nicht schaden

Gruß
DCoder
private Nachricht | Beiträge des Benutzers
juetho
myCSharp.de - Member



Dabei seit:
Beiträge: 3.331
Herkunft: Berlin

beantworten | zitieren | melden

Hallo,

die Suche nach Nachricht Server Client liefert u.a. den Beitrag TCP Nachricht an Client mit einem Verweis, der Dir vielleicht hilft.

Jürgen
private Nachricht | Beiträge des Benutzers
irfasirfas
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

beantworten | zitieren | melden

Ich verwendde zu Verbindung zum Server TCP/IP . Auf dem Server habe ich:


class CServer{
{
static void Main (string[] args){

channel = new TcpChannel(9000);
ChannelServices.RegisterChannel(channel);
RemotingConfiguration.RegisterWellKnownServiceType(typeof (myRemotingObject), "serverdienst", WellKnownObjectMode.SingleCall);
Sitzung sitzung=new Sitzung();
Verwaltung.SitzungList.Add(sitzung);
}
}

Die Klasse myRemotingObject implementiert die Schnittstelle ImyRemotingObject.
Zur Verwaltung von eizelnen Clients gibt es die Klasse "Sitzung" und dann gibt es noch die Klasse Verwaltung, die alle CLients verwalten.

Beim Client dann:
class CClient{
{
static void Main (string[] args){
channel = new TcpChannel();
ChannelServices.RegisterChannel(channel);
ServerObject = (ImyRemotingObject)Activator.GetObject(typeof(ImyRemotingObject)), "tcp://localhost:9000/serverdienst");
}
}

Jetzt weiss ich nicht, wie der Server z.B einzelnen Sitzungen aus der SitzungList mitteilen kann, dass sie bestimmte Events ausführen. Wenn z.B anderer Client einen Datensatz in der Datenbank geändert hat und die ein Refresh gemacht werden soll.

Hat da jemand eine Idee?
private Nachricht | Beiträge des Benutzers
AlfameisterT
myCSharp.de - Member



Dabei seit:
Beiträge: 154

beantworten | zitieren | melden

Eigentlich genauso wie Clients auf Methoden des Servers zugreifen.

Du Schreibst eine Klasse Client. Die muss ein bestimmtes Interface IClient implementieren. Da sind dann Methoden wie wie z.B. 'DataChanged()' enthalten.


Meldet sich der Client am Server an, gibt er eine Reference auf sich mit.
z.B. IServer.Connect(IClient client).

In der Liste speichert der Server die Referencen der Clients beim Anmelden.
Ändert ein Client Daten, z.B. ChangeData(IClient sender, MyData data)
dann weiß der Server wer Daten ändert. Du gehtst dann die Liste durch und rufst die MEthode DataChanged aller CLients auf. Über ne If Abfrage kannst du den Sender ja überspringen.
private Nachricht | Beiträge des Benutzers