首先,我只是一个业余爱好者,所以如果这是一个愚蠢的问题,或者我太天真,我很抱歉。 (这也意味着我买不到昂贵的图书馆)
情况就是这样:我正在C#.NET中构建一个简单的语音聊天应用程序(类似于Ventrilo或TeamSpeak,但仅适用于大约15或20人,并且在100Mbps LAN上运行)。我有工作服务器(每个客户端产生线程)和客户端应用程序使用UDP进行连接,DirectSound用于捕获和播放声音。我可以打“1对1”电话,但我无法找出最重要的事情之一:
我如何在对话中拥有两个以上的人?
答案 0 :(得分:2)
您需要一些集中的位置来通过多播将数据包发回,否则您需要一种分散的方法,其中每个客户端都连接到每个其他客户端,并且每个客户端都托管多播。你想要避免的是让机器将数据转发给其他每台机器,这会导致O(n)时间向每台机器发送消息(并且I / O很慢!)。
在任何一种情况下,您最终都会遇到同样的问题:如何组合音频流。实现此目的的一种简单机制是在将信号发送回网络端口之前(或者从网络端口输出,或者输出到扬声器),将信号按位或信号组合在一起,但这假设您可以访问非压缩和合理同步的流。