UNIX高级编程【基于IPV4的流媒体组播系统】

目录

项目要求:

项目分析:

服务端

接口、模块细分​

模块一  媒体库模块

模块二  并发服务器模块(线程池)

模块三  主模块

隐含模块  流量控制模块

客户端


  • 项目要求:

                该系统类似于网络收音机,提供多个频道的节目,客户端先接受频道列表,选择需要收听的频道,进行节目的收听。最多支持200个频道可供客户收听,200个频道可以同时收听。

  • 项目分析:

  1. c/s架构的 client / server

  2. 服务端主要推动组播系统的运行,客户端用于接收服务端推送的节目

  3. 服务端

    1. 基于IPV4, UDP(用户数据报协议 224~239)
    2. 支持多个频道同时收听,需要同一时间段内执行多个任务或处理多个事件,可以选择多进程并发,或者多线程并发(线程池)
    3. 所有频道的节目数据是需要存储的,可以选择存储在磁盘中,或者数据库。需要解析整个频道的目录
    4. 整体来说服务端以服务方式运行,建议使用守护进程
  4. 接口、模块细分
  5.  模块一  媒体库模块
    1. 音频文件的IO操作,可使用标准IO,或文件IO
    2. 获得频道目录,使用目录流的方式(opendir(3) / readdir(3) / closedir(3)),或 glob(3)
    3. 实现方案
      1. 抽象数据类型 struct mlib_st {};
      2. 获取频道列表 mlib_get_chn_list();
      3. 读取频道数据 mlib_read_chn_data();
  6. 模块二  并发服务器模块(线程池)
    1. 采用多线程资源竞争同步
    2. 多线程并发可以提高程序的响应速度和资源利用率。反之,多进程间的切换和通信开销较大,并发性能可能会受到一些限制。
  7. 模块三  主模块
    1. 负责的是整体的调动
      1. 初始化线程池
      2. 初始化套接字
      3. 构建守护进程
    2. 调用媒体库模块,获取频道列表
      1. 将发送频道列表任务入队(发送频道列表的函数加入到线程池 )
      2. 将发送频道数据任务入队(有多少个有效频道(有描述+有数据),启动多少个发送频道数据函数)
  8. 隐含模块  流量控制模块
    1. 发送频道列表和发送频道数据,需要流控(客户端播放音频按照一定速率播放)
  9. 客户端

    1. 初始化套接字,绑定端口
    2. IP_ADD_MEMBERSHIP,加入多播组,从网络中接收数据
    3. 从接受的频道列表中选择频道,并播放接收到的音频mplayer
    4. 父进程读网路数据,写入管道
    5. 子进程读管道,由子进程运行mplayer
      1. dup2(pfd[0], 0);
      2. execl("/usr/bin/mplayer", "mplayer", "-", NULL)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于IPv4流媒体广播系统Plus,在原版的基础上进行升级和bug修复等。采用C语言编写,使用高级Unix编程技术。The streaming media broadcasting system plus based on IPv4 is upgraded and bug….zip优质项目,资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目。 本人系统开发经验充足,有任何使用问题欢迎随时与我联系,我会及时为你解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(若有),项目具体内容可查看下方的资源详情。 【附带帮助】: 若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步。 【本人专注计算机领域】: 有任何使用问题欢迎随时与我联系,我会及时解答,第一时间为你提供帮助,CSDN博客端可私信,为你解惑,欢迎交流。 【适合场景】: 相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可以基于此项目进行扩展来开发出更多功能 【无积分此资源可联系获取】 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。积分/付费仅作为资源整理辛苦费用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值