3

まず第一に、私はただの趣味なので、これがばかげた質問であったり、あまりにも素朴すぎたりしたら申し訳ありません. (高価なライブラリを買えないということでもあります)

これが状況です: 私は C#.NET で簡単なボイス チャット アプリケーションを構築しています (Ventrilo や TeamSpeak のようなものですが、約 15 人または 20 人のみで、100Mbps LAN で実行されます)。サーバー (各クライアントの生成スレッド) と、接続に UDP を使用し、サウンドのキャプチャと再生に DirectSound を使用するクライアント アプリケーションがあります。「1 対 1」の電話をかけることはできますが、最も重要なことの 1 つがわかりません。

会話に 2 人以上が参加するにはどうすればよいですか?

4

1 に答える 1

2

マルチキャストを介してパケットを送り返すための集中化された場所が必要です。または、すべてのクライアントが他のすべてのクライアントに接続され、各クライアントがマルチキャストをホストする分散型アプローチが必要です。回避したいのは、マシンが他のすべてのマシンにデータを転送するようにすることです。これにより、各マシンにメッセージを送信するのに O(n) の時間がかかります (そして I/O は遅いです!)。

どちらのシナリオでも、オーディオ ストリームを結合する方法という同じ問題が発生します。これを実現するための簡単なメカニズムの 1 つは、信号をビットごとにまとめて送信することです (ネットワーク ポートから、またはスピーカーから)。

于 2010-02-06T20:45:12.053 に答える