6

インターネット経由でデータを転送する良い方法を探していて、C++/windows 環境で作業しています。データはバイナリで、抽出された画像の圧縮ブロブです。入力と要件は次のとおりです。

  1. 6kB/パケット @ 10 パケット/秒 (1 秒あたり 60k バイト)
  2. 信頼できるデータ転送

私はネットワークプログラミングが初めてで、これまでのところ、次のいずれかの方法が適していることがわかりました。

  1. ソケット
  2. MSMQ (MS メッセージ キューイング)

クライアントはブラウザ上で実行されます (ブラウザにリアルタイムの画像を表示します)。サーバーがネイティブ C++ コードを実行している間。同じことを達成するための他の方法があれば教えてください。どちらに行くべきですか、なぜですか?

4

3 に答える 3

3

画像が送信されるペースをサーバーが決定する場合は、サーバー プッシュスタイルのソリューションが適しています。最近、ほとんどのブラウザー (および非ブラウザーでさえも) が落ち着いているのはWebSocketです。

広く採用されている標準になることは別として、WebSocket がほとんどのプロプライエタリ プロトコルより優れている主な利点は、WebSocket が HTTP の上で実行されるため、(ほとんどの) プロキシやファイアウォールなどに浸透できることです。

サーバー側では、node.jsを統合できる可能性があります。これにより、WebSocket を簡単に実装でき、他の多くのライブラリが付属しています。これは C++ で記述されており、node.js が VM をホストする C++ および JavaScript を介して拡張可能です。node.js の主な機能は、すべてのレベルで非同期であるため、そのスタイルのプログラミングがデフォルトになっています。

もちろん、サーバー側で WebSocket を実装する方法は他にもあります。おそらく node.js は必要以上のものです。Windows で node.js の C++ 拡張機能を実装し、socket.ioを使用して古いブラウザーの WebSocket および非 WebSocket トランスポートを実行しましたが、うまくいきました。

しかし、それはテキストデータでした。バイナリ データの場合、socket.ioでは実行できないため、WebSocket を介してバイナリを実行する他のライブラリを確認できます。

于 2012-10-23T00:54:11.870 に答える
2

Windowsマシンでサーバーを実行できない特別な理由はありますか?60kb /秒、ある種の組み込みデバイスのように見えますか?

私たちの説明に基づいて、ブラウザにリアルタイムで画像情報を表示する必要がありました。HTTPを使用できる可能性があります。ただし、ステートレスです。つまり、情報が転送されると、接続が失われます。クライアントはC++/Windowsマシンをポーリングする必要があります。生成される情報が定期的であると確信している場合は、このアプローチを使用できます。これにはサーバーが必要なので、最初の質問に「はい」の場合のみ

チャットプロトコル。クライアントで実行されているJabberクライアントや、C ++/Windowsマシン上のJabberサーバーのようなもの。チャットプロトコルはほぼリアルタイムを可能にします

于 2012-10-22T06:20:25.743 に答える
2

理にかなっているように思えるかもしれませんが、このシナリオでは MSMQ を使用しません。今は問題に遭遇しないかもしれませんが、MSMQ メッセージはサイズが限られているため、最終的には壁にぶつかる可能性があります。

このアプリケーションには TCP を使用します。TCP は信頼性を念頭に置いて構築されており、ソケットを介してデータを簡単にフィードできます。非常に単純なプロトコルを自分で考え出す必要があるかもしれませんが、それが最善の選択です。

すぐに使用できる MSMQ を理解する組み込みデバイスを使用していない限り、MSMQ を使用する最善の策はプロキシを使用することであり、それでも TCP とおそらく HTTP で遊ぶことを余儀なくされます。

私は個人的な時間にセキュリティ カメラを含むホーム オートメーションを行っており、.net マイクロ フレームワークを使用しています。たとえ MSMQ 機能があったとしても、私はまだ使用しません。

あなたがやりたいこととまったく同じように聞こえるMJPEG(Motion JPEG)を調べることをお勧めします。

http://www.codeproject.com/Articles/371955/Motion-JPEG-Streaming-Server

于 2012-10-22T21:13:58.253 に答える