自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xidianliusoftware的专栏

记录自己IT路上的点点滴滴

  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 5.系统模块设计

1. 种子解析:负责解析种子文件,从中获取Tracker服务器的地址,待下载的文件名和长度,piece长度,各个piece的hash值。2. 连接Tracker:根据HTTP协议构造获取peer地址的请求,与Tracker建立连接,解析Tracker的回应消息,从而获取各个peer的IP地址和端口号。3. 与peer交换数据:根据peer的IP地址和端口号连接peer,从peer处下载数据

2011-10-31 15:01:43 982

原创 4.关键算法及策略

1. 流水线作业:     当客户端向peer发送数据请求时(即发送request消息),一次请求多个slice(即一个数据包发送多个request消息请求多个slice)。假如客户端一次只发送一个slice请求,则peer给客户端发送完一个slice的数据后进入等待,等待客户端发送新的数据请求。如果一次发送多个slice请求,则peer发送完一个slice后接着发送下一个slice,

2011-10-31 14:08:58 592

原创 3. 与Tracker交互及peer之间的通信

与Tracker交互主要有两个目的:一是将字节的下载进度告知给Tracker以便Tracker进行一些相关的统计;二是获取当前下载同一个共享文件的peer的IP地址和端口号。         客户端使用HTTP协议与Tracker进行通信。Tracker通过Http Get方法获取请求,如 htttp://myBT.net/announce ?param1=value1&param2=

2011-10-29 17:07:19 1157

原创 2.种子文件结构

B编码种子文件和Tracker的返回信息都是经过B编码的。B编码有4种类型:字符串、整型、列表、字典。字符串格式::。如:字符串spam,经过B编码为4:spam整型的编码格式:ie,即以i开头,以e作为终结符。如整数3 表示为i3e。列表的编码格式:le,如l4:spam4:eggse表示两个字符串,一个是spam,另一个是eggs。字典的编码格式:de,其中关键字是一个经过

2011-10-29 14:43:46 2014

原创 1. BT协议

BitTorrent(简称BT) 是一个文件分发协议,每个下载者在下载的同时不断的向其他下载者上传已下载的数据。BT协议通过一定的策略保证上传的速度越快,下载的速度也越快。        BT协议的文件分发系统的构成:         一个Web服务器         一个种子文件         一个Tracker(跟踪)服务器         一个原始文件提供者

2011-10-29 12:29:37 1384

转载 eclipse c++ : `pthread_create 未定义

Eclipse + CDT:pthread_create函数编译时报错:undefined reference to `pthread_create’undefined reference to `pthread_create’undefined reference to `MD5′由于pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a

2011-10-28 21:56:05 7483 2

转载 IPad开发环境安装配置图文

转自:http://ideapad.zol.com.cn/53/160_525409.html###补充:首先测试一下自己的系统配置能否安装苹果系统。 可以下载Securable查看你CPU是否支持虚拟还要确认在BIOS是“Enabled”的。 一步一步的详细步骤在vm虚拟机里安装苹果雪豹系统,清晰明了 此帖对"联想IdeaPad"的评论如果想体

2011-10-28 12:37:18 3861 1

原创 linux下fork()函数用法

fork()函数用于创建子进程。进程创建成功后,函数返回两次值,一次返回值为0,代表子进程在运行, 另一次返回子进程的ID,代表当前父进程正在运行。例如下面的程序:/* * Test.c * *  Created on: Oct 19, 2011 *      Author: root */#include #include #include int m

2011-10-25 15:06:14 398

原创 linux 进程结构

linux一个进程有3部分组成:代码段,数据段,堆栈段。代码段存放程序的可执行代码。数据段存放程序的全局变量,常量,静态变量。堆栈段中的堆用于存放动态分配的内存变量;堆栈段中的栈用于函数调用,存放函数的参数,函数内部定义的局部变量。 Linux进程状态 运行状态:R表示可中断等待状态:S表示不可中断等待状态:D表示僵死状态:进程已终止,但进程描述符依然存在,直到父进程调

2011-10-25 14:44:39 351

原创 linux系统文件目录概述

一般的Linux发行版本都含有如下几个目录:1. /bin 用于存放普特用户可执行的命令,系统中的任何用户都可以执行该目录中的命令            如ls、cp、mkdir等命令2. /boot Linux的内核及启动系统时所需要的文件,为保证启动文件更加安全可靠,通常把该目录存放在独立的分区上3. /dev 设备文件的存储目录,如硬盘、光驱等。4. /etc 用于存放系

2011-10-24 21:15:39 296

原创 条件编译

条件编译:源程序被编译时,其中一部分内容只在某个条件成立或不成立时才去编译,即对一部分内容指点编译的条件。范式一    #ifndef 标识符        程序段 1    #endif含义:如果没有定义标识符,就编译程序段1示例:         #ifndef _getkey_h               #define _getkey_h

2011-10-23 21:37:45 238

转载 linux wait函数用法

【转自:http://hi.baidu.com/_hstyle/blog/item/fb7b12c4447390af8226acc5.html】    进程一旦调用了 wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait 就会收集这个子进程的信息, 并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一

2011-10-22 23:33:20 1187

原创 thinking

人其实不怕失败,最怕的是几年下来,周围的一切都变了,却发现自己什么都没有变 “不要为明天忧虑,天上的飞鸟,不耕种也不收获,上天尚且要养活它,田野里的百合花,从不忧虑它能不能开花,是不是可以开得和其它一样美,但是它就自然的开花了,开得比所罗门皇冠上的珍珠还美。你呢,忧虑什么呢?人比飞鸟和百合花贵重多了,上帝会弃你不顾吗?”

2011-10-20 15:07:04 207

原创 linux 创建线程问题undefined reference to 'pthread_create'

报错:undefined reference to 'pthread_create'问题原因:    pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库。问题解决:    在编译中要加 -lpthrea

2011-10-20 15:06:46 407

原创 在Eclipse中运行C++程序出现"Launch failed. Binary not foud"和"Program file not Specified"的问题

第一步:右键点击工程,选择 Properties->C/C++ Build->Settings->Binary Parser, 勾选 "PE Windows Parser" 。第二步:运行配置界面中下,在C/C++ Appliaction一栏中点击Browse按钮,在项目工程目录下,找到Debug目录,选择可执行程序,即gcc,确定后,点击应用并运行,可以了~~~

2011-10-20 15:06:17 1331 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除