---Uestclab小组组员:王亮邓磊何智权电子科技大学一、引言1.
1项目简要介绍该项目是一个网络电视的原型系统,主要包括了视频服务器系统、认证服务器系统、交换机系统以及网络电视客户端系统等三个部分,模拟了视频数据生成、发送、组播转发、用户身份的认证、频道请求的认证与应答、用户视频账单的生成与存储以及视频数据接收与播放等网络电视系统的整个运行流程.
1.
2项目背景网络电视又称IPTV(InteractivePersonalityTV),它将电视机、个人电脑及手持设备作为显示终端,通过机顶盒或计算机接入宽带网络,实现数字电视、时移电视、互动电视等服务,网络电视的出现给人们带来了一种全新的电视观看方法,它改变了以往被动的电视观看模式,实现了电视以网络为基础按需观看、随看随停的便捷方式.
网络电视作为极有发展潜力的新兴产业,其产业链已经初步形成,它的出现无疑将改变人们的生活,为人们带来全新的生活方式,同时也给运营商带来了新的业务增长点.
在我国,电信运营商发展IPTV业务的最大动力是由于收入增长上的乏力.
一方面,传统的话音业务在移动通信、VoIP等新技术新业务的冲击下开始萎缩;另一方面运营商大力发展宽带网络,却没有从中得到足够的收益,宽带的赢利方式还局限在接入费用的收取上,运营商急需寻找新的盈利手段,借助IPTV业务,电信运营商可以增加收入,同时由于宽带接入的发展快于宽带业务的发展,用户的增长速度开始趋缓,IPTV的兴起又为电信运营商继续发展宽带创造了一个良好的机遇;第三,宽带接入的繁荣并没有带来内容服务上的繁荣,宽带网络上的业务和应用多数还停留在窄带时期,宽带用户的消费需求远远没有满足;最后,IPTV扩展了电信业务的使用终端,这大大扩展了电信运营商的用户群体.
据CNNIC2005年1月统计表明,我国上网计算机总量为4610万台,而我国电视总量预计已经超过3亿台.
通过增加STB,把现有电视转化为综合型信息终端,将不仅满足不善于使用电脑的用户对个性化定制节目、互动娱乐以及高速互联网接入的业务需求,而且解决了家庭中共用计算机的冲突和不方便等问题.
作为一种基于宽带网络的交互式视频业务,IPTV为电信运营商创造了新的发展机遇,电信运营商发展IPTV能够促进宽带接入的继续发展,既满足了用户的消费需求也增加了收入,同时IPTV的出现也为运营商从传统电信服务商向新型综合信息服务提供商的转型创造了条件,可以籍此建立更为稳定的竞争优势.
二、任务概述2.
1目标设计出能模拟网络电视服务器系统、模拟认证服务器系统、模拟交换机系统、模拟网络电视客户端系统,实现网络服务器三个频道数据显示和发送,认证服务器对用户的认证与应答、对用户请求观看的频道认证与应答,交换机对个频道数据的接收显示和以组播方式转发,客户端用户登录、频道请求的发送、视频数据的显示及各频道的切换.
2.
2运行环境操作系统:WindowsXP运行库:.
netframework4.
0三、需求3.
1功能需求3.
1.
1系统结构图图3-13.
1.
2子系统功能划分IPTV网络电视模拟系统包括网络电视服务器系统、认证服务器系统、交换机系统、网络电视机顶盒系统:网络电视服务器系统.
网络电视服务器系统:网络电视服务器系统包含3个频道节目CH1、CH2、CH3,每个频道内容分别为:一幅静态显示位图;屏幕中央显示形式为(H:M:S)的24时制时钟字符串;一个以某个半径围绕屏幕中间点做顺时针旋转小正方形.
网络电视服务器功能如下:各频道图像数据的生成:提供良好的服务器界面,可将硬盘上的位图图片设为频道一的图像,设置初始时间字符串并生成频道二的图像,设置频道三的图形旋转半径与转速并生成图像;各频道图像数据的显示:提供良好的服务器界面,能显示各频道的实时图像;各频道图像数据的发送:以UDP单播方式将各频道的图像数据发送给交换机;认证服务器系统:认证服务器系统主要完成对用户身份的认证与应答、对请求频道的认证与应答、对用户视频账单的存储,其功能可具体划分为:用户身份的认证:接收交换机转发的用户登录信息(用户名、密码),查看认证服务器中的用户信息文件,对用户的合法性进行判断,向交换机发送应答信息;频道请求的认证:接收交换机转发的各在线用户发送的频道请求信息,查看认证服务器中的用户购买频道信息文件,对是否允许该用户观看此频道进行判断,并向交换机发送应答信息;用户视频账单的存储:接收交换机发送的各用户观看频道的账单信息,并将收到的账单信息存储在认证服务器的账单文件中,同时在认证服务器界面上显示收到的账单信息;交换机系统:交换机系统主要完成对用户登录信息及频道请求信息的转发、对用户观看频道的信息进行记录和账单的生成和发送、网络服务器发来的图像数据进行接收和转发,其功能可具体划分为:各频道图像数据的接收:分别接收网络电视服务器发来的三个频道的图像数据;各频道图像数据的转发:以UDP组播方式将各频道的图像数据发送给机顶盒;打开机顶盒:能同时打开三个机顶盒程序;用户登录信息和频道请求信息的转发:接收机顶盒发来的用户登录信息和频道请求信息,并转发给认证服务器;认证服务器应答信息的转发:接收认证服务器发来的用户登录应答信息和频道请求应答信息,并转发给机顶盒;用户观看频道的计时以及账单的生成和发送:对各用户敢看某频道进行计时,用户停止观看某频道后,生成用户观看该频道的账单,并发送给认证服务器;异常控制:当认证服务器发生异常而当机后,将缓存的各用户账单信息进行转储,认证服务器恢复正常后将转储的账单发送给认证服务器;当机顶盒发生异常而当机后,生成该机顶盒的账单信息,并发送给认证服务器;机顶盒程序:机顶盒主要完成用户的登录,请求频道,以及接收允许观看频道的图像数据,并在用户界面中显示,其功能划分如下:用户的登录:提供用户登录界面,将用户输入的登录信息发送给交换机,并接收交换机的应答;频道的请求:发送用户的频道请求信息给交换机,接收交换机的应答,并根据应答进行后续处理;各频道图像数据的接收:加入组播组接收交换机发来的图像数据;各频道的切换:能随机切换频道,接收该频道数据;频道图像数据的显示:用户登录成功后,提供良好的界面,在接收到频道图像数据后显示接收到的频道实时图像.
四、总体设计4.
1频道收视基本设计概念和处理流程4.
1.
1网络电视服务器系统网络电视服务器系统通过主界面对三个频道的初始内容进行设置,然后将每个频道的图像数据分别以UDP单播的方式实时地发给交换机系统,并提供界面查看每个频道显示的实时内容.
其处理流程如下:读取主界面的初始化参数.
根据初始化参数在内存中实时绘制频道内容,每绘制一次图像,就以UDP单播发送图像数据;当图像数据大于UDP单播数据发送限制时,进行图像帧数据的分片发送.
点击查看时,将内存中绘制的内容显示在频道内容对话框上.
4.
1.
2交换机系统交换机系统主要分三个线程进行处理,每个线程先绑定一个套接字,并且打开一个组播套接字,然后循环接收服务器端传来的数据,并且转发给组播套接字.
如图4-1如图4-14.
1.
3机顶盒程序机顶盒程序主要接收交换机组播的数据,首先接收到组播数据的分片,然后读取当前图片的编号以及数据的偏移量,然后将其进行重组,当收到的文件完整后,就将数据复制到显示的缓冲区,并且调用相关函数进行显示.
如图4-2图4-24.
2认证计费基本设计概念和处理流程4.
2.
1认证计费过程认证计费过程,首先由客户端发起,交换机起中间人作用,认证和计费的信息主要由认证服务器保存.
如图4-3所示(特别说明:为了方便,系统没有实现交换机与认证服务器的认证流程,标准认证流程必须有这个过程,防止伪造计费信息)图4-34.
2.
2认证服务器系统认证计费服务器主要存储机顶盒相关的编号、认证密码、各个机顶盒对应的收看频道的权限,以及各个机顶盒对每个频道的收看时间.
认证服务器是一个问答系统,对交换机提交的用户认证请求,频道收看请求进行回答,通过查询存储的数据回答交换机是否允许客户端登录或者收看频道,并且记录由交换机发来的计费信息.
如图4-4图4-44.
2.
3交换机系统交换机在认证过程中主要是客户端和认证服务器的中间层,起转发认证数据和记录并缓存账单信息的作用.
如图4-5图4-54.
2.
4客服端系统客服端系统主要发起认证的请求,并且通过认证请求的回答控制频道显示以及登录情况.
如图4-6图4-64.
2.
5数据格式统一定义数据包格式如图4-7所示图4-74.
3开发语言开发语言:C/C++基于类库:MFC开发环境:vs2010五、详细设计5.
1服务器端设计服务器端的每个频道相当于一个UDP的客户端,每个频道具有初始化参数设置、频道内容图像的实时绘制和发送、实时显示频道内容的功能.
其中内容图像的实时绘制和显示、图像数据的实时发送是服务器系统设计的重点.
5.
1.
1内容图像的绘制和显示自绘图形函数voidDrawCurve(CDC*pDC,CRectrcClient)传递dc指针和图像大小,利用传递进来的dc指针绘制频道内容.
内存绘图函数char*BmpToBit(int*Len)传递int指针保存内存中绘制的图像数据的长度,返回指向内存图像数据的指针.
此函数里面调用自绘图形函数,并传递内存dc,便可得到自绘图形的内存数据.
显示内存图像函数voidOutputStream(char*stream)传递图像内存数据的指针,便可在制定对话框窗体上显示内存中绘制的图像5.
1.
2频道内容的发送当图像数据长度小于UDP发送限制时直接发送.
当图像数据长度大于UDP发送限制时,需要分包发送,首先定义自己的发送数据包结构(图像帧序号、图像数据偏移量,图像数据),每次只发送固定大小的数据包,将图像数据段填充到自定义数据包中,分包发送.
5.
2交换机设计5.
2.
1视频数据转发交换机分为三个线程,采用阻塞套接字,分别分配10M的缓冲区,当频道启动按钮点下时候,启动对应线程,线程内部先绑定接收服务器数据的单播套接字,再初始化组播套接字,然后循环接收数据,并且转发到组播套接字.
当点下关闭按钮时,先关闭套接字,然后终止线程,处理流程如图5-1图5-1最终结果如图5-2图5-25.
2.
2认证计费处理交换机认证处理主要完成两个内容,一个是管理和机顶盒之间的认证连接,一个是生成计费信息并且发送到服务器.
交换机处理机顶盒认证请求流程如图5-3图5-3交换机处理机顶盒频道请求流程如图5-4图5-45.
3机顶盒端设计5.
3.
1图像内容接收流程机顶盒端主要完成三个工作,第一个是加入多播组,第二个任务是接收图片数据并且重组为一张完整的图片,第三个为显示接收到的图片.
在机顶盒端主要采用消息驱动的方式,其原因为,消息驱动和WINDOWS进城通信十分配合,第二是作为一个单独的客服端,没必要使用复杂的重叠I/O和完成端口的模式.
为提高程序美观程度,在打开的时候,会初始化读取一张本地图片,并且进行显示,这样也能更好的反映客户端在接收到数据的变化.
客服端处理详细流程如图5-3:图5-55.
3.
2数据包重组数据包重组主要利用结构体structUdpResambleHead{unsignedintusPicNum;//图片编号unsignedintusPicDateSerNum;//当前分片的偏移量}如结构体所示,结构体包含16个字节,分别为两个无符号整型,第一个为图片的编号,第二个为数据在当前图片编号的具体偏移位置.
当客服端接收到数据,首先会验证是否BMP文件的第一个数据包,如果是,就把复制到缓冲区的开始,然后初始化接收的图片信息.
初始化信息分为,第一,更新当前正在接收的图片的编号(unsignedshortusPicNum),重置已经接收到的数据大小为当前分边大小(DWORDdwBmpRecvLen),更新当前接收的图片编号的完整的大小(DWORDdwBmpFullLen);如果不是文件头,则验证是否当前接收的图片编号,不是则抛弃,是就根据偏移量,复制到缓冲区对应的位置并且叠加已经接收到的大小.
最后验证图片是否完整,完整则显示(无论是否图片第一个数据包都要执行此步).
流程如图5-4图5-65.
3.
3登录认证切换频道首先机顶盒请求用户输入编号和密码,然后发给交换机请求结果,如果成果则进入主界面,然后等待用户打开或者切换频道的操作.
切换频道首先关闭当前套接字,然后判断当前是否有播放的频道,如果有,发送当前频道的关闭请求,然后发送要播放频道的播放请求,并且等待结果,接收到结果后,如果允许播放,则重新初始化组播地址和端口,设置套接字为消息驱动,并且接收的消息为wm_user和接收AP_READ和AP_CLOSE事件,并且把自己频道按钮设置为不可用,其它频道按钮设为可用.
如果不可播放,则直接显示对话框,不可以播放当前频道.
处理流程如图5-7所示图5-75.
3.
4最终结果图5-85.
4认证服务器设计认证服务器主要对交换机发过来的各种类型的消息进行认证并返回结果.
认证服务器启动时先初始化套接字并设置成消息驱动,并且接收的消息为wm_user和接收FD_ACCEPT,FD_READ和FD_CLOSE事件.
当有FD_READ事件发生时,首先判断数据包中的消息认证类型,主要有以下几种认证类型:5.
4.
1用户登录认证用户名和密码保存在USER.
TXT文本文件中,服务器收到用户登录认证消息,便查找此文件,并返回相应结果.
5.
4.
2频道认证频道认证信息保存在CHANNEL.
TXT文本文件中,服务器收到频道认证消息,便查找此文件,并返回相应结果.
5.
4.
3记录历史账单信息在BILLING.
.
txt文件中保存账单信息,并在窗口中显示当前收到的最新账单信息,并返回相应结果.
5.
5认证计费异常处理5.
5.
1客户端异常当客户端异常的时候,通过关闭套接字的消息,查询到连接对象,当前是否正在播放频道,如果是,通过连接对象生成账单,发送给服务器.
5.
5.
2认证服务器端异常认证服务器端异常的时候,交换机端首先查询所有连接对象,如果对象正在收看频道,则生成账单信息,缓存到bill.
data的文件当中,然后关闭所有连接对象,自己进行退出.
再下一次启动的时候,首先读出所有账单信息,并且发送给服务器.
5.
5.
3交换机异常交换机异常可以采用认证服务器通过发送频道认证成功的时间算起,直接记录当前所有通过了频道请求认证,但是并没有收到账单信息的对象进行账单生成.
同时也可以机顶盒端缓存当前播放的情况,并且再下一次登录的时候,发送给交换机并且提交给认证计费服务器.
(备注,由于时间关系该功能没有实现)六、测试6.
1测试方法采用以界面为基础的测试.
以界面为基础的测试仅仅依靠软件与其运行环境之间的界面来选择和产生测试数据,而不管软件的具体需求和具体实现细节.
采用测试功能的方法.
如何低价香港服务器购买?想要做一个个人博客,想用香港服务器,避免繁琐备案,性能不需要多高,只是记录一些日常而已,也没啥视频之类的东西,想问问各位大佬有没有低价的香港服务器推荐?香港距大陆近,相比美国服务器最大的优势在于延迟低,ping值低,但是带宽紧张,普遍都是1M,一般戏称其为“毛细血管”。同时价格普遍高,优质稳定的一般价格不菲。大厂云梯队阿里云、腾讯云两家都有香港服务器,要注意的是尽量不要选择...
LOCVPS发布了7月份促销信息,全场VPS主机8折优惠码,续费同价,同时香港云地/邦联机房带宽免费升级不加价,原来3M升级至6M,2GB内存套餐优惠后每月44元起。这是成立较久的一家国人VPS服务商,提供美国洛杉矶(MC/C3)、和中国香港(邦联、沙田电信、大埔)、日本(东京、大阪)、新加坡、德国和荷兰等机房VPS主机,基于XEN或者KVM虚拟架构,均选择国内访问线路不错的机房,适合建站和远程办...
LOCVPS发来了针对元旦新年的促销活动,除了全场VPS主机8折优惠外,针对德国/荷兰KVM #1/美国KVM#2 VPS提供终身7折优惠码(限量50名,先到先得)。LOCVPS是一家成立于2012年的国人VPS服务商,提供中国香港、韩国、美国、日本、新加坡、德国、荷兰、俄罗斯等地区VPS服务器,基于KVM或XEN架构(推荐优先选择KVM),均选择直连或者优化线路,国内延迟低,适合建站或远程办公使...