我需要专家意见,如果我的问题本身是一个令人困惑的问题,我很抱歉。
我正在阅读有关 VOIP 应用程序(客户端/服务器)的结构。大多数情况下,建议将 UDP 用于语音流。我还检查了一些语音聊天应用程序,如 paltalk 和 inspeak,他们的网站提到他们使用 udp 语音流,这似乎不正确,原因如下。
我检查了 paltalk 和 inspeak 使用的流量/端口。他们打开了 UDP 和 TCP 端口,使用数据包嗅探器我可以看到没有太多的 UDP 通信,但主要是 TCP 通信正在进行。
另外据我所知,在 UDP 协议中,服务器无法将数据发送到 NAT(DSL 路由器)后面的客户端。并且“UDP Braodcast”不是基于“互联网”的语音聊天应用程序的选项。这就是为什么雅虎在他们的文档中提到,如果无法进行 udp 通信,雅虎信使会切换到 tcp。
所以我的问题是......
我在上述陈述中是否理解错误?
如果 UDP 不可行,那么那些聊天应用程序使用 TCP 流进行语音?
由于我经历过 TCP 语音流会产生延迟,没有语音中断但语音延迟,那么语音聊天服务器/客户端通信的最佳结构应该是什么?
到目前为止,我认为,如果客户端将数据作为 udp 数据包发送到服务器并且服务器通过 TCP 流将数据包分发给客户端,这是一个合适的解决方案吗?我的意思是这就是商业语音聊天应用程序的作用吗?
感谢您的回答将帮助我和许多其他程序员。
杰夫