Live555_学习笔记.pdf

  1. 1、本文档共136页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Live555_学习笔记

一、 编译Live555 此文出处【/nkmnkm】 一直想研究 live555,没有时间,终于因为项目的原因可以深入无间地研究一下了.所以在 此著文以记之. 一 如何编译 live555 利用 mingw 环境很容易:在 live555 文件夹下, genMakefiles mingw make 即可. 可以用 genWindowsMakefiles.cmd 生成 VC 可用的 makefile,但是对比较新的vc 版本支持 不好,需要自己改很多东西. 用 VC 编译有一种更好的办法: 手动为每个库都生成一个 lib 项目,为 mediaServer 生成 exe 项目,设置好各库之间的依赖 关系,就可以用 VC 编译了.由于 live555 代码中没有单独支持 gcc 的东西,所以编译是相 当的容易.这样就可以用VC 编译和调试了. 我现在怕麻烦,只用 eclipse+mingw .eclipse 的调试也很好用了. 二、Live555 基础类 二 基础类 讲几个重要的基础类: BasicUsageEnvironment 和 UsageEnvironment 中的类都是用于整个系统的基础功能类.比 如 UsageEnvironment 代表了整个系统运行的环境,它提供了错误记录和错误报告的功能, 无论哪一个类要输出错误,就需要保存 UsageEnvironment 的指针.而TaskScheduler 则 提供了任务调度功能.整个程序的运行发动机就是它,它调度任务,执行任务(任务就是一 个函数).TaskScheduler 由于在全局中只有一个,所以保存在了UsageEnvironment 中.而 所有的类又都保存了 UsageEnvironment 的指针,所以谁想把自己的任务加入调度中,那是 很容易的.在此还看到一个结论:整个 live555 (服务端)只有一个线程. 类 HashTable:不用多说,实现了哈稀表. 类 DelayQueue:译为"延迟队列",它是一个队列,每一项代表了一个要调度的任务(在 它的 fToken 变量中保存).同时保存了这个任务离执行时间点的剩余时间.可以预见,它 就是在 TaskScheduler 中用于管理调度任务的东西.注意,此队列中的任务只被执行一次! 执行完后这一项即被无情抛弃! 类 HandlerSet:Handler 集合.Handler 是什么呢?它是一种专门用于执行 socket 操作的 任务(函数),HandlerSet 被 TaskScheduler 用来管理所有的 socket 任务(增删改查).所 以TaskScheduler 中现在已调度两种任务了:socket 任务(handlerSet)和延迟任务 (DelayQueue).其实TaskScheduler 还调度第三种任务:Event,介个后面再说. 类 Groupsock:这个是放在单独的库 Groupsock 中。它封装了socket 操作,增加了多播放 支持和一对多单播的功能.但我只看到它对 UDP 的支持,好像不支持TCP 。它管理着一个 本地 socket 和多个目的地址,因为是 UDP,所以只需知道对方地址和端口即可发送数据。 Groupsock 的构造函数有一个参数是struct in_addr const groupAddr,在构造函数中首先 会调用父类构造函数创建 socket 对象,然后判断这个地址,若是多播地址,则加入多播组。 Groupsock 的两个成员变量destRecord* fDests 和 DirectedNetInterfaceSet fMembers 都 表示目的地址集和,但我始终看不出 DirectedNetInterfaceSet fMembers 有什么用,且 DirectedNetInterfaceSet 是一个没有被继承的虚类,看起来 fMembers 没有什么用。仅 fDesk 也够用了,在 addDestination()和 removeDestination()函数中就是操作fDesk ,添加或删除 目的地址。 解释一下 Groupsock::changeDestinationParameters()函数: [cpp] 1.//改变目的地址的参数 2.//newDestAddr 是新的目的地址 3.//newDestPort 是新的目的端口 4.//newDestTTL 是新的 TTL 5.void Groupsock::changeDestinationParameters( 6.

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档