更新于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 使用与学习的更多相关文章

  1. Python框架之Django学习

    当前标签: Django   Python框架之Django学习笔记(十四) 尛鱼 2014-10-12 13:55 阅读:173 评论:0     Python框架之Django学习笔记(十三) 尛 ...

  2. Python第十课学习

    Python第十课学习 www.cnblogs.com/yuanchenqi/articles/5828233.html 函数: 1 减少代码的重复 2 更易扩展,弹性更强:便于日后文件功能的修改 3 ...

  3. Python第八课学习

    Python第八课学习 www.cnblogs.com/resn/p/5800922.html 1 Ubuntu学习 根 / /: 所有目录都在 /boot : boot配置文件,内核和其他 linu ...

  4. 第四百一十五节,python常用排序算法学习

    第四百一十五节,python常用排序算法学习 常用排序 名称 复杂度 说明 备注 冒泡排序Bubble Sort O(N*N) 将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮 ...

  5. Python入门到精通学习书籍推荐!

    1.Python基础教程(第2版 修订版)<Python基础教程(第2版修订版)>包括Python程序设计的方方面面,内容涉及的范围较广,既能为初学者夯实基础,又能帮助程序员提升技能,适合 ...

  6. python中confIgparser模块学习

    python中configparser模块学习 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section ...

  7. python全栈开发学习_内容目录及链接

    python全栈开发学习_day1_计算机五大组成部分及操作系统 python全栈开发学习_day2_语言种类及变量 python全栈开发_day3_数据类型,输入输出及运算符 python全栈开发_ ...

  8. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

  9. Python学习---Python下[元组]的学习

    元组是不可变的, 用小括号()定义,而且一旦定义 ,不可变[类型是tuple] [元组看做一个整体,不可拆分,不可赋值,但可以全部重新赋值] 通过圆括号,用逗号分隔,常用在使语句或用户定义的函数能够安 ...

随机推荐

  1. [mysql,2018-02-28] bat安装、启动mysql,并创建数据库、表

    @echo off f: cd F:\mysql-win32 @echo off&setlocal enabledelayedexpansion cd bin echo ###### 停止当前 ...

  2. EasyUi 复杂多表头设置

    columns: [ [ { field: 'Test', title: '测试', rowspan: 3, width: 100, sortable: true }, { title: '测试1', ...

  3. 如何正确实现 Java 中的 HashCode

    相等 和 Hash Code 从一般角度来看,Equality 是不错的,但是 hash code 更则具技巧性.如果我们在 hash code上多下点功夫,我们就能了解到 hash code 就是用 ...

  4. Android开发 assets目录

    Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.Java里面自动生成该资源文件的ID,所以访问这种资源文件 ...

  5. Laravel常见问题集锦

    1.提示:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes? ...

  6. python:选房抽签小工具

    1.房间号和姓名写在house_name.xls的house标签页中[注意!名字均不要改动]2.运行house.py3.当前同目录下会生成result.xls,即为结果:程序运行过程中不要打开该文件, ...

  7. Vue Loader

    介绍 允许为 Vue 组件的每个部分使用其它的 webpack loader,例如在 <style> 的部分使用 Sass 和在 <template> 的部分使用 Pug(模板 ...

  8. .net core 微服务之日志落盘设计

    原文:.net core 微服务之日志落盘设计 目录 1.设计目标 2.日志流程 3.串联请求事务 3.1 请求ID 3.2 处理服务器.服务 3.3 处理接口名 3.4 日志的发生时间 3.5 接口 ...

  9. BASIC GIT WORKFLOW

    BASIC GIT WORKFLOW Generalizations You have now been introduced to the fundamental Git workflow. You ...

  10. 【原创】python嗅探QQ消息实战

    目录 需求分析 选型 设计与流程 实现过程 结果展示 1 需求分析   在一些业务场景中需要拿到IM上的通信记录来做一些数据分析,例如对QQ平台中的消息进行领域分类等. 2 选型 环境与工具: pyt ...