Qvod的一些简单分析

news/2024/7/8 5:31:52

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

打算造一个基于bt播放的流媒体播放器. 于是简单的分析了下目前正是基于bt播放的流媒体播放器qvod.

qvod总体实现比较简单, 从软件设计上大致可以看出分成三大部分:
1. tracker, 这个服务器在qvod发布的种子里可以看到, 不过使用协议有加密, 所有其它bt软件是无法使用它的种子正常下载的, 关于是如何加密的, 我就没有具体去做分析了.
2. seed server, 这个其实也就一个做种的bt客户端而已, 提供数据服务.
3. bt client, 在qvod里是QvodTerminal.exe这个程序.

现在我打算针对QvodTerminal.exe进行简单的分析.
QvodTerminal.exe是提供数据给播放器的一个bt客户端下载组件, qvod的播放器是基于dshow实现的, 基本上是抄用开源mpc那些filter完成, 除了自己实现了一个source filter吧, 整体来说, 除了做了个ui, qvod并没有做什么工作, 垃圾一个.
学过dshow的朋友都知道, source filter是提供数据给播放器下游filter的, 关于source filter是如何和QvodTerminal.exe来获得数据的呢? 我简单的分析了它的二个重要的协议.  

qvod是使用播放器组件来进行下载bt种子的, 这一步是用户不可见的, 下载好后, 将bt数据使用tcp协议8080端口发送到QvodTerminal.exe,然后由它去完成bt完成. 貌似在客户端发送种子到QvodTerminal.exe时, 还重新把Bt种子编码了一次, 这一步我没做具体分析了.

qvod跟source filter的数据通信协议一般是通过本地tcp端口8081进行的, 基本格式就是:
<整个数据包长度><协议Id>[协议内容]

如请求当前下载位图协议:

请求位图(c -- s):

<length:4byte><(00 00 04 19):4byte><filehash:40byte><unknow:8bytes>

返回位图(s -- c):
<length:4byte><(00 00 04 19):4byte><piece length:4byte><piece num:4byte><unknow:4byte><downloaded size:4byte><bitfield>

请求数据(c -- s):
<length:4byte><(00 00 04 22):4byte><filehash:40byte><request length:4byte><offset:8byte>

返回数据(s -- c):
<length:4byte><(00 00 04 22):4byte><length:4byte><data>

暂时只帖出这么多了. 看文档就可以了, 可见如果真要盗用QvodTerminal.exe来二次开发一个bt播放器, 是很容易的事...


转载于:https://my.oschina.net/jackwgm/blog/35783


http://www.niftyadmin.cn/n/3540315.html

相关文章

CAN与RS485比较

来源&#xff1a;CSDN 原文&#xff1a;https://blog.csdn.net/reille/article/details/6135546 最近一个项目总体方案设计为分布式系统&#xff0c;于是在通讯上纠结于CAN总线还是RS485。因此在网上搜索一些了一些关于RS485和CAN总线的资料&#xff0c;除进一步认识RS485通…

ubuntu下wine QQ的安装

换成ubuntu之后&#xff0c;QQ的问题一直困扰着。webQQ用起来很不爽。偶尔间从同事那了解wine可以安装windows软件。就尝试着装QQ。参考了网上N多的帖子&#xff0c;终于给装好了&#xff0c;小兴奋下... 写此博客仅为记录下安装流程&#xff0c;方面下次安装。 1、首先安装win…

华为公司软件编程规范

目 录 1 排版 6 2 注释 11 3 标识符命名 18 4 可读性 20 5 变量、结构 22 6 函数、过程 28 7 可测性 36 8 程序效率 40 9 质量保证 44 10 代码编辑、编译、审查 50 11 代码测试、维护 52 12 宏 53 1 排版 1-1&#xff1a;程序块要采用缩进风格编写&a…

UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)

UART(Universal Asynchronous Receiver Transmitter&#xff1a;通用异步收发器) UART协议虽然速率较低&#xff0c;但协议简单&#xff0c;实现起来很便捷。 UART有4个pin&#xff08;VCC, GND, RX, TX&#xff09;, 用的TTL电平, 低电平为0(0V)&#xff0c;高电平为1&#…

vb的property和event

把MSDN抄下来备用.呵呵 Event 语句 定义用户自定义的事件。 语法 [Public] Event procedurename [(arglist)] Event 语句包含下面部分&#xff1a; 部分 描述 Public 可选的。指定该 Event 在整个工程中都是可见的。缺省情况下 Events 类型是 Public。应注意&#x…

I/O口

1.0 关于I/O 口 发现在Cortex-M3里&#xff0c;对于GPIO的配置种类有8种之多&#xff1a; &#xff08;1&#xff09;GPIO_Mode_AIN 模拟输入 //一般用用ad输入 &#xff08;2&#xff09;GPIO_Mode_IN_FLOATING 浮空输入 &#xff08;3…

定时计数器

1 工作方式0 当TMOD中的M1&#xff0c;M2设置成0,0时&#xff0c;定时器/计数器就工作在方式0&#xff0c;工作方式0是一种13位定时器/计数器方式。可用来测量外信号的脉冲宽度所持续的时间。 2 工作方式1 工作方式1为16位定时器/计数其结构和操作与工作方式0基本相同&#xff…

Linux修改网络配置

一、修改IP地址vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICEeth0BOOTPROTOnoneBROADCAST192.168.1.255IPADDR192.168.1.33NETMASK255.255.255.0NETWORK192.168.1.0ONBOOTyesUSERCTLnoPEERDNSnoTYPEEthernet vi /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICEeth1O…