分享一个语音通信处理的开源框架,C#编写,支持除噪,去咋,屏回音。多种编码支持。
扬帆破浪 2013-11-12 12:38:47 这段时间做语音通信的,今天终于稳定了,用到的框架给伙计们分享一下,大家可以去我的资源地址下载 :
http://download.csdn.net/download/zhgyuhui/6538355。
UDP打洞的没有分享给大家,在产品里面没有摘出来,大概的思路是这样的。
首先有一个外网服务器(内网也行没有必要必须外网,内网连接上都行的,你可另开一个网段嘛,很多方式。),作为UDP中转,同时也作为TCP服务器,TCP与UDP结合才能才实现相对可靠点的打洞。
接着就是具体步骤了,首先服务器开启UDP和TCP 监听客户端消息,客户端A连接服务器UDP TCP, TCP长连接,客户端A实现UDP连接的时候服务器要做一个任务,就是把客户端A的公网IP和端口返回到连接的客户端A,这样端口就穿过路由了,接着把A自己的端口信息和IP信息通过TCP发送到另一客户端B,B客户端接收信息后,连接UDP获取IP信息和端口信息,发送到客户端A,客户端B紧接着就用UDP发送验证消息,接收到A的消息说明打洞成功,客户端A通过TCP接收到了客户端B的IP消息也是需要打洞的,客户端A和B是同时进行发送验证信息的,这样能发送接收就算是打洞成功了,通过四五秒的连续发送彼此不能接收只能通过服务器中转了,UDP做服务器中转效率是杠杠的,百万级是没有问题的,关键是你要做好消息验证,做穿透要注意几点:
1、UDP端口有周期的,如果你等一会不发送消息到对方的端口,对方的端口就会自动关闭了。
2、发送的数据最好做验证,发送一条信息让对方返回一条信息,一举两得。
3、很多都不知道流数据咋传,其实可以转换为base64string,用JSON做服务器交换数据 。