Laden...

Nachrichten vom Server an Clients verschicken

Erstellt von irfasirfas vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.471 Views
I
irfasirfas Themenstarter:in
2 Beiträge seit 2007
vor 16 Jahren
Nachrichten vom Server an Clients verschicken

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!!

184 Beiträge seit 2005
vor 16 Jahren

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

J
3.331 Beiträge seit 2006
vor 16 Jahren

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

I
irfasirfas Themenstarter:in
2 Beiträge seit 2007
vor 16 Jahren

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?

A
154 Beiträge seit 2005
vor 16 Jahren

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.