質問

クライアントがコマンドを送信し、サーバーがイベントをトリガーできるように、サーバーと複数のクライアント間の接続を維持する必要があります。サーバーは基本的に音楽プレイヤーであり、クライアントは「play()」、「pause()」、「getPlayLists()」などのコマンドを送信します。 「歌い」または「playerpaused」。また、データを送信することができる必要があります(現在の曲、アルバム画像、プレイリストなど)。私は自分で先に進んでソケットを作成し、上記のすべてのシナリオを処理するための独自のプロトコルを作成することができますが、誰かが私の前にこれをすでに行っている可能性があります。 .NETのサーバーとクライアント間の通信。たとえば、XML-RPCを見ましたが、「OnClientsEnd」をどのように処理するかはわかりません。また、私が間違っていない場合、XML-RPCは休息のように作られています。また、WCFも見ましたが、経験がないので、どこから始めればいいのか、シンプルなコンソールアプリでサーバーをホストする方法がわかりません。

重要: クライアントは.NETではない必要があります。
重要: これは、Java(Android)に接続するために可能である必要があります。
重要: プライマリプラットフォームは、Windows(サーバーとクライアント)とAndroid(クライアント)です。
重要: オーディオのストリーミングは行われていません。ただし、画像を送信する必要があります。

解決策のアイデアは大歓迎です。また、優れたフレームワークへのリンクや、すでに存在しているコンポーネントを使用する方法の説明がある場合、.NETには本当に幸せです。

編集問題は、ソケットを介してデータを送信するとき、送信したパッケージが同時にサーバーによって読み取られるという保証がないことです。私は50、100、次に50バイトを再度送信するかもしれませんが、サーバーはそれを200バイトのチャンク、または最初の100から100などと読むかもしれません。つまり、バッファを作成する必要があります。問題です)私がメッセージ全体を受け取った(そしてそれ以上何もない)。

役に立ちましたか?

解決 4

結局、いくつかの言語で簡単に実装できる独自の単純なプロトコルを作成することになりました。ソケットの両側にバッファーの余分な層を追加し、各メッセージを送信して、これがメッセージの終わりであることを反対側に伝えるバイトシーケンスを送信することで、必要な結果を達成しました。また、スペースの「$ return」メッセージを有効にするために、メッセージにIDを追加しました。

メッセージは、XMLSerializerを使用した単純なシリアル化クラスです。クラスはXSDから生成されます。

他のヒント

ZEROMQ あなたの問題には良いように見えます。自分で似たようなものを実装したようです。

  • 並行性フレームワークとして機能するスーパーソケットライブラリ。

  • InProc、IPC、TCP、およびマルチキャストにメッセージを伝達します。

  • ファンアウト、pubsub、パイプライン、リクエストレプリーパターンのN-to-nを接続します。

  • クラスター化された製品とスーパーコンピューティングに十分な速さ。

  • スケーラブルなマルチコアメッセージパスアプリケーション用の非同期I/O。

  • 大規模でアクティブなオープンソースコミュニティ。

  • C、C ++、Java、.NET、Pythonを含む20以上の言語。

  • Linux、Windows、OS Xを含むほとんどのOS。

  • LGPLフリーソフトウェア、Imatix Corporationによる商業サポート。

あなたはWCFに行くべきです: http://msdn.microsoft.com/en-us/netframework/aa663324.aspx

あなたも見ることができます xmppWebSockets. 。 XMPPは、メッセージングに限定されているだけでなく、いつでも自分の目的のために拡張できます。 HTML5の一部であるため、WebSocketsは順調に進んでいます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top