2017-01-16 8 views
0

私はネットワークプログラミングに関する多くの経験はありませんが、それを必要とする興味深い問題が生じました。サーバーは、異なるタイプのデータの複数のストリームを他のマシンに送信します。各マシンは、ストリームのどれ(1つまたは複数)を受信したいかを選択できる必要があります。セットアップ全体はローカルネットワークのみに限定されています。最初は2つのクライアントしかありませんが、可能であれば、スケーラブルなアプローチを設計したいと思います。ローカルネットワーク上で異なる種類のデータをストリーミングする:tcpまたはudp?

単一のストリームだけをストリーミングする既存のサーバーコードは、そのためにTCPストリーミングソケットを使用しています。しかし、このアプローチが複数のストリームや複数のクライアントにうまくいくかどうかは、そのテーマに関するいくつかの読書からはわかりません。その理由は、同じストリームを受信したいが、異なるTCPソケットを介して接続する2つのクライアントは、帯域幅を浪費することになりませんか?特にUDPに比べて、マルチキャストが可能です。

私の未熟さのために、私はそこに情報を提供してくれた人に忠告しています。ストリームを信頼できるものにすることを念頭に置いて、UDPから最初から始め、それは、TCPを使い続けるよりも?あるいは、これは適切なネットワーク構造を設計することによってより良く解決されるでしょうか?必要に応じて詳細を提供していただければ幸いです。ありがとう。

更新:現時点では信頼性の高いマルチキャストのためにPGMemcasterを探しています。サーバー側ではC#実装が、クライアント側ではPython実装が必要です。

+0

第1オフ。クライアントがストリームから、または間違った順序ですべてのデータを取得しないかどうかは重要ですか? –

+0

ストリームの各メッセージは順次であると考えられるため、信頼性が重要です。クライアントは、適切な処理を行うために正しい順序に依存します。 – rahul1210

+0

まあ、私はUDPを使用して気にしません。なぜこれらの2つの非常に重要な問題を確実にするために誰かがすでに行ったことを再実装しようとする理由 –

答えて

1

スケーラブルなプログラムが必要なので、データが受信されたことを確認するために余分な長さがかからず、データ送信の処理が高速になるため、UDPを使用するのが適切です。

+0

コメントに基づいて、 "_信頼性は重要です。ストリーム内の各メッセージはシーケンシャルであると考えられています。クライアントは正しい処理を行うために正しい順序に依存しています_ _" UDPは受け入れられません。 –

+0

しかし、UDPはTCPよりも高速であるため、これによりストリームが増えるため、より多くのクライアントにサービスを提供できるようになり、よりスケーラブルなアプローチになります。 – bendacoder

+1

私は理解していますが、OPは信頼性とパケットの順序を求めており、UDPはそれを提供していません。アプリケーションによってUDPに追加することはできますが、要求に関するUDPの問題は解決していません。 –

関連する問題