python bittorrent 使用与学习
更新于20171128
关于这个p2p的技术,阿里开源了蜻蜓,大家可以看看,感觉应该比这个要好用,而且文档也全。
前言
最近在学习python的p2p协议,发现网上找不到好的文章,又仔细找了找终于找到了武老师之前讲的视频,自己动手做了一下,其实也不太难,不过其中有些地方还是没搞懂。这里就先简单做个笔记吧。
基本环境信息
两台linux虚拟机
node1 192.168.3.3
node2 192.168.3.4
基本环境是一样的
[root@node1 dist]# python --version
Python 2.7.5
[root@node1 dist]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
部署
本文大部分python操作都是在这个目录下
/application/bit/murder/dist/
两台都要做的操作:
mkdir -p /application/bit
cd /application/bit
git clone https://github.com/WisWang/murder #这个是github twitter开源的一个项目,我fork到了我的github上面
准备一个tar文件,不要太小,放到当前目录:
cd /
tar cf deploy.tar var
cd /application/bit/murder/dist/
mv /deploy.tar .
启动tracker:
[root@node1 dist]# python murder_tracker.py
现在node1上面做种子:
cd /application/bit/murder/dist/
python murder_make_torrent.py deploy.tar 192.168.3.3:8998 deploy.torrent
然后启动seed:
python murder_client.py seed deploy.torrent deploy.tar 192.168.3.3
拷贝种子文件到node2(种子文件应该放到http server或者ftp server上,这里就省略了):
[root@node2 dist]# pwd
/application/bit/murder/dist
[root@node2 dist]# scp 192.168.3.3:$PWD/deploy.torrent .
分别在node1和node2上面启动peer,
[root@node1 dist]# python murder_client.py peer deploy.torrent deploy_new.tar 192.168.3.3
[root@node2 dist]# python murder_client.py peer deploy.torrent deploy_new.tar 192.168.3.4
一会儿就能看到这个deploy_new.tar下载完成了。
下载完成和做seed的时候都会看到 done and done这个信息
[root@node2 dist]# python murder_client.py peer deploy.torrent deploy_new.tar 192.168.3.4
done and done
下面是tracker的log供大家参考:
[root@node1 dist]# python murder_tracker.py
192.168.3.3 - - [08/May/2017:07:43:00] "GET /announce?info_hash=%FE%CE%A6%C6%28%0B%AB%DEve%00%8B%19%D1%80%A5%8A%DD%A3%D8&peer_id=T03H-----OQSfu8jzTCo&port=13159&uploaded=0&downloaded=0&left=0&no_peer_id=1&compact=1&event=started&ip=192.168.3.3&key=MCe15v HTTP/1.1" 200 60 "-" "BitTornado/T-0.3.17"
192.168.3.4 - - [08/May/2017:07:43:12] "GET /announce?info_hash=%FE%CE%A6%C6%28%0B%AB%DEve%00%8B%19%D1%80%A5%8A%DD%A3%D8&peer_id=T03H-----NwZ3DidklAM&port=15595&uploaded=0&downloaded=0&left=0&no_peer_id=1&compact=1&event=started&ip=192.168.3.4&key=vBp8fR HTTP/1.1" 200 67 "-" "BitTornado/T-0.3.17"
192.168.3.3 - - [08/May/2017:07:43:16] "GET /announce?info_hash=%FE%CE%A6%C6%28%0B%AB%DEve%00%8B%19%D1%80%A5%8A%DD%A3%D8&peer_id=T03H-----OQSfu8jzTCo&port=13159&uploaded=0&downloaded=0&left=0&no_peer_id=1&compact=1&ip=192.168.3.3&key=MCe15v HTTP/1.1" 200 67 "-" "BitTornado/T-0.3.17"
192.168.3.4 - - [08/May/2017:07:43:27] "GET /announce?info_hash=%FE%CE%A6%C6%28%0B%AB%DEve%00%8B%19%D1%80%A5%8A%DD%A3%D8&peer_id=T03H-----NwZ3DidklAM&port=15595&uploaded=0&downloaded=0&left=0&no_peer_id=1&compact=1&ip=192.168.3.4&key=vBp8fR HTTP/1.1" 200 67 "-" "BitTornado/T-0.3.17"
192.168.3.3 - - [08/May/2017:07:43:31] "GET /announce?info_hash=%FE%CE%A6%C6%28%0B%AB%DEve%00%8B%19%D1%80%A5%8A%DD%A3%D8&peer_id=T03H-----OQSfu8jzTCo&port=13159&uploaded=0&downloaded=0&left=0&no_peer_id=1&compact=1&ip=192.168.3.3&key=MCe15v HTTP/1.1" 200 67 "-" "BitTornado/T-0.3.17"
192.168.3.4 - - [08/May/2017:07:43:42] "GET /announce?info_hash=%FE%CE%A6%C6%28%0B%AB%DEve%00%8B%19%D1%80%A5%8A%DD%A3%D8&peer_id=T03H-----NwZ3DidklAM&port=15595&uploaded=0&downloaded=0&left=0&no_peer_id=1&compact=1&event=stopped&ip=192.168.3.4&key=vBp8fR HTTP/1.1" 200 54 "-" "BitTornado/T-0.3.17"
python bittorrent 使用与学习的更多相关文章
- Python框架之Django学习
当前标签: Django Python框架之Django学习笔记(十四) 尛鱼 2014-10-12 13:55 阅读:173 评论:0 Python框架之Django学习笔记(十三) 尛 ...
- Python第十课学习
Python第十课学习 www.cnblogs.com/yuanchenqi/articles/5828233.html 函数: 1 减少代码的重复 2 更易扩展,弹性更强:便于日后文件功能的修改 3 ...
- Python第八课学习
Python第八课学习 www.cnblogs.com/resn/p/5800922.html 1 Ubuntu学习 根 / /: 所有目录都在 /boot : boot配置文件,内核和其他 linu ...
- 第四百一十五节,python常用排序算法学习
第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...
- Python入门到精通学习书籍推荐!
1.Python基础教程(第2版 修订版)<Python基础教程(第2版修订版)>包括Python程序设计的方方面面,内容涉及的范围较广,既能为初学者夯实基础,又能帮助程序员提升技能,适合 ...
- python中confIgparser模块学习
python中configparser模块学习 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section ...
- python全栈开发学习_内容目录及链接
python全栈开发学习_day1_计算机五大组成部分及操作系统 python全栈开发学习_day2_语言种类及变量 python全栈开发_day3_数据类型,输入输出及运算符 python全栈开发_ ...
- selenium + python自动化测试unittest框架学习(二)
1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...
- Python学习---Python下[元组]的学习
元组是不可变的, 用小括号()定义,而且一旦定义 ,不可变[类型是tuple] [元组看做一个整体,不可拆分,不可赋值,但可以全部重新赋值] 通过圆括号,用逗号分隔,常用在使语句或用户定义的函数能够安 ...
随机推荐
- mysql 使用 GROUP BY 时报错 ERROR 1055 (42000)
解决方法1:SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));这种修改只是暂时性的,还是在 my.ini 文件中的sq ...
- Python中字符串/字典/json之间的转换
import json #定义一个字典d1,字典是无序的 d1 = { "a": None, "b": False, "c": True, ...
- spring 之 property-placeholder 分析2
其实我们可以完全不使用 context:property-placeholder ,而是使用 PropertySourcesPlaceholderConfigurer : <bean cla ...
- getColor问题
getResource.getColor(R.color.color_name) 过时了,可以使用新加入的方法 ContextCompat.getColor(context, R.color.colo ...
- Asp.Net+JQuery.Ajax之$.post
段时间有点跑偏,经过米老师和师傅的耐心指导,终于认识到自己的问题,现在回归常规路线,继续B/S的学习. 经过近半个月的熏陶,对JQuery慢慢的有了亲切感.当时我采访过一清,问他看完JQuery视频有 ...
- ---dd io测试
下面是一个简单测试,虽然不够准确但是简单立即可行, 当前目录的IO写读测试: (写) dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync ( ...
- matlab中变量问题——readonly 索引超出矩阵维度 workspacefunc 215
matlab程序运行过程中会出现如上提示,在网上检索未果,键入dbstop if error语句也无法定错误之处,就想这个错误不是一般的错误. 通过间隔打断点的方式最后定位错误为一句exist = f ...
- linux 权限之acl
查看分区ACL权限是否开启 centos 6 dumpe2fs -h /dev/sda1(是查看ext2/ext3/ext4 文件系统信息的命令) centos 7 xfs_growfs /dev ...
- Sqlite安装教程
Sqlite下载页面:http://www.sqlite.org/download.html Windows安装 需要下载 sqlite-tools-win32-*.zip 和 sqlite-dll- ...
- 加入 Jungle Testnet
[加入 Jungle Testnet] 主网测试需要消耗大量 EOS,JungleTestnet为我们提供了一个测试用的EOS主链,上面的EOS可以通过申请获得.每6小时可以申请100EOS. [创建 ...