发布网友 发布时间:2022-04-23 00:36
共2个回答
热心网友 时间:2022-04-22 20:55
我做过一个,实现QQ一样的语音聊天功能,并同时进行计时收费。
语音部分使用的UDP通讯,收费部分使用TCP。语音采样后必须进行压缩(采样得到是PCM编码数据),否则数据量太大,带宽不够,我用的是A率(当时这个压缩弄了好长时间)。
这是我当时分析时写的聊天建立与终止的主要过程。
客户端:
A、根据在线用户发出聊天请求
B、收到打洞命令:
a、进行打洞,并向服务器回送同意,并开启语音收发
b、拒绝,向服务器回送拒绝
C、收到同意打洞或拒绝
a、如果是同意,在本地开启语音收发
b、如果拒绝,在本地显示该信息
D、发出聊天请求,在本地关闭语音收发
E、收到聊天终止命令,在本地关闭语音收发
服务端:
A、收到聊天请求,向另一客户端发出打洞命令:
取出目标客户端的用户名和源IP和UDP端口,存入“打洞命令”共公变量中
B、收到同意打洞或拒绝,将其转发
C、服务端的“在线控制”线程循环读取“打洞命令”共公变量,如果是自己的打洞命令则将该命令传入客户端。来自:求助得到的回答
热心网友 时间:2022-04-22 22:13
Socket是用来传输的,和语音通信没有关系,你这里的问题是解码规则的问题。