最近在研究使用vb p2p通讯,以及实现p2p网络直播的可能性,但是找遍了各大搜索引擎也没有找到一点有关于vb直播的内容。但是通过对rtp/rtsp等协议的了解,我产生了一点想法现在发出来,希望能够起到抛砖引玉的作用。 vb要实现流媒体p2p直播或点播必须要首先实现p2p网络互联的功能 “ClientA和ClientB分别登录Server(一台拥有外网IP的服务器上运行的服务器程序),Server记录外网IP和NAT发配的随机端口。 当ClientA想与ClientB直接连接通信时,ClientA发现一个连接请求包(格式自定义,包含想连接的用户名),Server接收到后查询记录中的数据。 然后分别向ClientA返回ClientB的外网IP和端口,向ClientB发送通知说ClinetA想连接他,并告诉他ClientA的外网IP和端口。 之后ClientA通过ClientB的外网IP和端口向ClientB发送打洞包(格式自定义,可以是任意数据,只为在NAT中有ClientB的外网IP记录)。 ClientB过ClientA外网IP和端口向ClientA送打洞包(格式自定义,可以是任意数据,只为在NAT中有ClientA的外网IP记录)。 这两个打洞包先发的那个对方肯定是收不到的,后发的那个可能会收到。 我们通过再次互相向对方发送一个数据包看看是否能够收到。。。 之后成功与否。。。” 这一点我通过学习吴滂关于用vb的winsock穿透代理的源码,取得了一点成果(见附件:目前只是实现了p2p的原理:代理穿透和内网通讯) 网连通了接下来就涉及一个传数据的问题,大家都知道,winsock控件传输数据存在一定的局限,就是一次接受数据量太少, 这里我们首先要将流媒体文件进行二进制分割发布,并且每个数据包上要采用一定的格式进行排序、打上时间戳,以保证客户端接收到包后,可已再次进行分发。其他的实现等同于普通的p2p通讯。一点肤浅的想法,恳请大家指正
原文链接:https://www.f2er.com/vb/263317.html