Frage

Ich brauche eine Verbindung zwischen einem Server und mehreren Clients zu halten, so dass die Kunden Befehle senden können, und die Server-Trigger-Ereignisse. Der Server ist im Grunde ein Musik-Player, und die Clients senden Befehle wie „Play ()“, „Pause ()“, „GetPlaylists ()“, etc. Den Server auf der Seite muß in der Lage sein, den Kunden Dinge zu sagen, wie "SongEnded" oder "PlayerPaused". Und auch, muss es möglich sein, einige Daten zu und her zu senden (wie aktuelle Song, Album Bild, Wiedergabelisten, etc.). Ich Ursache könnte vorangehen und eine Steckdose mich und mein eigenes Protokoll erstellen, um alle der oben genannten Szenarien für den Umgang mit, aber die Chancen sind, dass jemand dies bereits vor mir getan hat, also was ich wirklich will, ist ein Framework für die Echtzeit gemacht Kommunikation zwischen Server und Client für NET. Ich habe bei XML-RPC zum Beispiel gesucht, aber nicht sicher, wie ich soll den „OnClientSend“ mit damit umgehen. Auch, wenn ich nicht irre, XML-RPC wird seine REST-like. Ich habe auch bei wcf sah, aber da ich keine Erfahrung damit haben, weiß ich nicht wo ich anfangen soll und wie die Server in einer einfachen Konsole-app hosten.

. Wichtig: Der Client muss in der Lage sein, .NET nicht sein
Wichtig: Dies muss möglich sein, Java (Android) verbinden
. . Wichtig: Primary-Plattformen sind Windows (Server und Client) und Android (Client)
Wichtig: Nein Audio-Streaming wird. Allerdings muss Bilder gesendet werden.

Alle Ideen für eine Lösung würden geschätzt. Auch, wenn Sie bekommt Links zu einem guten Rahmen, oder Beschreibungen, wie Komponenten verwenden, bereits in .NET mir vorhandene würde wirklich glücklich sein.

[Bearbeiten] Das Problem ist, dass, wenn Daten über Sockets sendet es keine Garantie gibt (bei allen!), Dass die Pakete, die Sie gesendet vom Server zur gleichen Zeit gelesen werden. Ich könnte 50 senden, dann 100, dann 50 Bytes wieder, aber der Server könnte, dass als 200byte Brocken lesen oder ersten 100 dann 100 usw., die Mittel, die ich einen Puffer erstellen müssen, lesen Sie in Nachrichten, bis ich sicher wissen (diese das Problem ist), dass ich eine ganze Nachricht (und nichts mehr erhalten haben).

War es hilfreich?

Lösung 4

ich am Ende meines eigenes einfaches Protokoll zu schaffen, dass ich einfach in mehreren Sprachen implementieren. I erreichte das gewünschte Ergebnis, indem auf beiden Seiten der Muffe eine zusätzliche Schicht von Puffern Zugabe, dann jede Nachricht, die von einer Byte-Sequenz gefolgt sendet, die die andere Seite sagt, dass dies das Ende der Nachricht war. Auch habe ich ids auf die Nachricht, die die spesial „$ Return“ Nachricht zu ermöglichen.

Die Nachrichten werden einfach serialisiert Klassen XmlSerializer. Die Klassen sind von XSD generiert.

Andere Tipps

ZeroMQ sieht eine gute Passform für Ihr Problem. Sie scheint etwas ähnliches selbst implementiert haben.

  • Die Supersocket-Bibliothek, die als Gleichzeitigkeit Rahmen wirkt.

  • Trägt Nachrichten über inproc, IPC, TCP und Multicast.

  • Connect N-zu-N in Fanout, PubSub, Pipeline und Anfrage-Antwort-Muster.

  • Schnell genug für Cluster-Produkte und Supercomputer.

  • Asynchronous I / O für skalierbare Multi-Core-Message-Passing-Anwendungen.

  • Große und aktive Open-Source-Community.

  • Mehr als 20 Sprachen einschließlich C, C ++, Java, .NET, Python.

  • Die meisten OSes einschließlich Linux, Windows, OS X.

  • LGPL freie Software, kommerzielle Unterstützung von iMatix Corporation.

Sie können auch unter XMPP und WebSockets . XMPP ist nicht nur beschränkt für Messaging Sie es für Ihre eigenen Zwecke immer erweitern können. WebSockets aufkommt und es ist Teil von HTML5 ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top