资源简介
BT下载软件的源代码和文档,linux c程序设计
![](http://www.nz998.com/pic/65834.jpg)
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include “parse_metafile.h“
#include “bitfield.h“
extern int pieces_length;
extern char *file_name;
Bitmap *bitmap = NULL; // 指向位图
int download_piece_num = 0; // 当前已下载的piece数
// 如果存在一个位图文件则读位图文件并把获取的内容保存到bitmap
// 如此一来就可以实现断点续传即上次下载的内容不至于丢失
int create_bitfield()
{
bitmap = (Bitmap *)malloc(sizeof(Bitmap));
if(bitmap == NULL) {
printf(“allocate memory for bitmap fiailed\n“);
return -1;
}
// pieces_length除以20即为总的piece数
bitmap->valid_length = pieces_length / 20;
bitmap->bitfield_length = pieces_length / 20 / 8;
if( (pieces_length/20) % 8 != 0 ) bitmap->bitfield_length++;
bitmap->bitfield = (unsigned char *)malloc(bitmap->bitfield_length);
if(bitmap->bitfield == NULL) {
printf(“allocate memory for bitmap->bitfield fiailed\n“);
if(bitmap != NULL) free(bitmap);
return -1;
}
char bitmapfile[64];
sprintf(bitmapfile“%dbitmap“pieces_length);
int i;
FILE *fp = fopen(bitmapfile“rb“);
if(fp == NULL) { // 若打开文件失败说明开始的是一个全新的下载
memset(bitmap->bitfield 0 bitmap->bitfield_length);
} else {
fseek(fp0SEEK_SET);
for(i = 0; i < bitmap->bitfield_length; i++)
(bitmap->bitfield)[i] = fgetc(fp);
fclose(fp);
// 给download_piece_num赋新的初值
download_piece_num = get_download_piece_num();
}
return 0;
}
int get_bit_value(Bitmap *bitmapint index)
{
int ret;
int byte_index;
unsigned char byte_value;
unsigned char inner_byte_index;
if(index >= bitmap->valid_length) return -1;
byte_index = index / 8;
byte_value = bitmap->bitfield[byte_index];
inner_byte_index = index % 8;
byte_value = byte_value >> (7 - inner_byte_index);
if(byte_value % 2 == 0) ret = 0;
else ret = 1;
return ret;
}
int set_bit_value(Bitmap *bitmapint indexunsigned char v)
{
int byte_index;
unsigned char inner_byte_index;
if(index >= bitmap->valid_length) return -1;
if((v != 0) && (v != 1)) return -1;
byte_index = index / 8;
inner_byte_index = index % 8;
v = v << (7 - inner_byte_index);
bitmap->bitfield[byte_index] = bitmap->bitfield[byte_index] | v;
return 0;
}
int all_zero(Bitmap *bitmap)
{
if(bitmap->bitfield == NULL) return -1;
memset(bitmap->bitfield0bitmap->bitfield_length);
return 0;
}
int all_set(Bitmap *bitmap)
{
if(bitmap->bitfield == NULL) return -1;
memset(bitmap->bitfield0xffbitmap->bitfield_length);
return 0;
}
void release_memory_in_bitfield()
{
if(bitmap->bitfield != NULL) free(bitmap->bitfield);
if(bitmap != NULL) free(bitmap);
}
int print_bitfield(Bitmap *bitmap)
{
int i;
for(i = 0; i < bitmap->bitfield_length; i++) {
printf(“%.2X “bitmap->bitfield[i]);
if( (i+1) % 16 == 0) printf(“\n“);
}
printf(“\n“);
return 0;
}
int
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5422 2008-01-23 17:53 源代码_BT下载程序\bitfield.c
文件 1111 2008-01-23 17:53 源代码_BT下载程序\bitfield.h
文件 223 2008-01-23 17:53 源代码_BT下载程序\bterror.c
文件 925 2008-01-23 17:53 源代码_BT下载程序\bterror.h
文件 27176 2008-01-23 17:53 源代码_BT下载程序\data.c
文件 2779 2008-01-23 17:53 源代码_BT下载程序\data.h
文件 698 2008-01-23 17:53 源代码_BT下载程序\log.c
文件 245 2008-01-23 17:53 源代码_BT下载程序\log.h
文件 1258 2008-01-23 17:53 源代码_BT下载程序\main.c
文件 310 2008-01-23 17:53 源代码_BT下载程序\Makefile
文件 23106 2008-01-23 17:53 源代码_BT下载程序\message.c
文件 1460 2008-01-23 17:53 源代码_BT下载程序\message.h
文件 11606 2008-01-23 17:53 源代码_BT下载程序\parse_me
文件 1369 2008-01-23 17:53 源代码_BT下载程序\parse_me
文件 4230 2008-01-23 17:53 源代码_BT下载程序\peer.c
文件 3455 2008-01-23 17:53 源代码_BT下载程序\peer.h
文件 15738 2008-01-23 17:53 源代码_BT下载程序\policy.c
文件 1155 2008-01-23 17:53 源代码_BT下载程序\policy.h
文件 5443 2008-01-23 17:53 源代码_BT下载程序\sha1.c
文件 996 2008-01-23 17:53 源代码_BT下载程序\sha1.h
文件 1363 2008-01-23 17:53 源代码_BT下载程序\signal_hander.c
文件 224 2008-01-23 17:53 源代码_BT下载程序\signal_hander.h
文件 13921 2008-01-23 17:53 源代码_BT下载程序\torrent.c
文件 327 2008-01-23 17:53 源代码_BT下载程序\torrent.h
文件 11458 2008-01-23 17:53 源代码_BT下载程序\tracker.c
文件 1556 2008-01-23 17:53 源代码_BT下载程序\tracker.h
文件 227011 2008-01-23 17:53 源代码_BT下载程序\ttorrent
文件 1736192 2008-01-23 17:51 BT软件下载开发完整版-00.doc
文件 1602048 2008-01-23 17:52 BT软件下载开发完整版-01.doc
目录 0 2008-11-26 14:04 源代码_BT下载程序
............此处省略3个文件信息
- 上一篇:最新eigen库3.2.10
- 下一篇:C流程图生成器_V3.2
相关资源
- Navicat Premium 15汉化包.zip55438
- 登录注册界面.zip48872
- 条码字体barcode128
- Rational Rose Common破解文件
- res10_300x300_ssd_iter_140000.caffemodel与dep
- scratch 第1课 翻跟斗的小猫(入门)
- stm32f407上的两个can发送和接收例程
- Scrach 欢乐狙击手.sb2
- 04741计算机网络原理知识点整理.docx(
- Wolfram Mathematica 矩阵初等变换函数(
- pscad近海风电模型 Fortran语言
- 程序员专用字体YaHei.Consolas.1.11b42517
- scratch3.0 源程序(说相声)
- AutoCAD永久去教育版破解补丁
- 开源1A锂电池充电板TP4056原理图+PCB
- m1卡 ic卡可选择扇区初始化加密软件
- TSCC.exe
- 欧姆龙CP1系列单轴定位PLC程序.cxp
- 用Beckhoff(倍福)PLC读写巴鲁夫RFID
- CVSNT 完整覆盖版防TortoiseCVS中文乱码
- pfc 使用说明.doc
- Scratch 飞机大战.sb3
- STC8951系列单片机中方指南
- 《Visual Prolog 基础类》 中文参考.chm
- Omron ETN21模块进行modbustcp通讯
- 基于ACCESS的生产管理信息系统.mdb
- CANopen使用手册_埃斯顿
- Scratch 吃豆人追踪者.sb3
- Scratch 变脸(将人物图片变成各种各样
- oracle数据迁移项目实施方案
评论
共有 条评论