资源简介
自行编写的全套BT源代码,C++编写,完全实现BT的功能,并且经过了大量和长期的实际应用。是可以提供正常商业服务的基础P2P文件共享软件。
代码片段和文件信息
// Bdecode.cpp: implementation of the CBdecode class.
//
//////////////////////////////////////////////////////////////////////
#include “stdafx.h“
#include “testBT.h“
#include “Bdecode.h“
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CBdecode::CBdecode()
{
m_lsize = 0;
m_pBuf = 0;
}
CBdecode::~CBdecode()
{
}
CVal* CBdecode::decode_int(long &lPos)
{
//*
long lOldPos = lPos;
for (; lPos {
if (m_pBuf[lPos] == ‘e‘)
{
lPos ++;
break;
}
}
if (lPos > m_lsize)
return 0;
char* pstrStop = 0;
long l = strtol(m_pBuf+lOldPos &pstrStop 10);
if (pstrStop[0] != ‘e‘)
return 0;
return new CVal(l);
}
CVal* CBdecode::decode_string(long &lPos)
{
long lOldPos = lPos;
for (; lPos {
if (m_pBuf[lPos] == ‘:‘)
{
lPos ++;
break;
}
}
if (lPos > m_lsize)
return 0;
char* pstrStop = 0;
long len = strtol(m_pBuf+lOldPos &pstrStop 10);
if (pstrStop[0] != ‘:‘)
return 0;
if ((lPos+len) > m_lsize)
return 0;
CVal* pVal = new CVal(m_pBuf+lPos len);
lPos += len;
return pVal;
}
void ClearList(VALLIST* pls)
{
VALLIST::iterator iter = pls->begin();
while(iter != pls->end())
{
delete *iter;
iter++;
}
}
CVal* CBdecode::decode_list(long &lPos)
{
VALLIST* ls = new VALLIST();
for (; lPos {
if (m_pBuf[lPos] == ‘e‘)
{
lPos++;
break;
}
CVal* pRet = bdecode_rec(lPos);
if (!pRet)
{
ClearList(ls);
delete ls;
return 0;
}
ls->push_back(pRet);
}
if (lPos > m_lsize)
{
ClearList(ls);
delete ls;
return 0;
}
return new CVal(ls);
}
void ClearMap(VALMAP* pmap)
{
VALMAP::iterator iter = pmap->begin();
while(iter != pmap->end())
{
delete (*iter).second;
iter++;
}
}
CVal* CBdecode::decode_dict(long& lPos)
{
VALMAP* pmap = new VALMAP();
string strLast;
for (; lPos {
if (m_pBuf[lPos] == ‘e‘)
{
lPos++;
break;
}
CVal* pRet = decode_string(lPos);
if (!pRet)
{
ClearMap(pmap);
delete pmap;
return 0;
}
string strCur = pRet->pstrVal;
delete pRet;
if (strLast.size() > 0)
{
if (strCur <= strLast)
{
ClearMap(pmap);
delete pmap;
return 0;
}
}
strLast = strCur;
CVal* pRetVal = bdecode_rec(lPos);
if (!pRetVal)
{
ClearMap(pmap);
delete pmap;
return 0;
}
(*pmap)[strLast] = pRetVal;
}
if (lPos > m_lsize)
{
ClearMap(pmap);
delete pmap;
return 0;
}
return new CVal(pmap);
}
CVal* CBdecode::bdecode_rec(long& lPos)
{
CVal* pRet = 0;
char t = m_pBuf[lPos];
switch (t)
{
case ‘i‘:
return
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2004-02-27 14:59 GGBT
文件 33490 2003-09-25 23:04 GGBT\sizecbar.cpp
文件 4835 2003-08-02 23:00 GGBT\ctrlext.h
文件 2747 2003-08-02 22:55 GGBT\ctrlext.cpp
文件 8432 1980-04-26 13:45 GGBT\ctrlext.inl
文件 24093 2004-02-27 15:04 GGBT\testBT.clw
文件 13995 2004-02-27 15:21 GGBT\testBT.plg
文件 49968 2003-10-29 10:48 GGBT\testBT.rc
文件 18224 2003-10-29 17:45 GGBT\testBT.dsp
文件 6335 2003-09-25 23:04 GGBT\sizecbar.h
文件 1544 2003-09-22 01:46 GGBT\Downloader.h
文件 705 2003-08-03 02:21 GGBT\BTFormat.h
文件 2011 2003-09-29 10:56 GGBT\Connection.h
文件 2347 2003-10-12 11:23 GGBT\testBT.h
文件 522 2003-08-02 23:00 GGBT\Parseargs.h
文件 4969 2003-08-24 02:16 GGBT\Choker.cpp
文件 749952 2003-09-25 15:46 GGBT\ip.dat
文件 1013 2003-08-02 22:55 GGBT\Common.cpp
文件 1428 2003-10-06 18:44 GGBT\StdAfx.h
文件 1415 2003-09-28 01:05 GGBT\MonitorBar.h
文件 537 2003-09-19 11:36 GGBT\testBT.dsw
文件 900 2003-08-02 23:00 GGBT\SortClass.h
文件 2694 2003-10-06 13:05 GGBT\MenuSpawn.h
文件 2195 2003-09-29 01:43 GGBT\testBTDoc.h
文件 3661 2003-10-11 02:01 GGBT\Download.h
文件 4229 2004-02-27 15:13 GGBT\IPLocater.cpp
文件 783 2003-08-02 23:00 GGBT\Measure.h
文件 2985 2003-10-12 13:59 GGBT\ButtonEx.h
文件 4203 2003-10-07 23:37 GGBT\ExpandingDialog.cpp
文件 212 2003-08-02 22:55 GGBT\StdAfx.cpp
............此处省略193个文件信息
相关资源
- VC++实现考试系统源码客户端服务器
- VC++语法分析工具源代码附文档
- VC++俄罗斯方块完整源码
- 自制FFT频谱分析软件
- 基于vc++的SVM
- 详细vc++写的俄罗斯方块
- VC6.0仿真windows记事本程序
- chartCtrl Vc++
- 混合加密程序 VC++包括DES加密和AES加密
- glut.3.7.6+.DevPak
- PL0超强扩展(可视化)
- vc++6.0开发的音频采集程序
- VC++ 导入excel数据
- 五子棋(棋盘)(MFC编写)
- 在线考试系统VC++MFC
- VC++ 视频播放器 程序及源码
- vc++编写的聊天程序
- VC++ 网络对战五子棋游戏(服务端+用
- VC++简单多人聊天室源码
- A*算法vc++源码
- VC++数字图像处理程序设计 63讲 杨淑莹
- VC++就业培训宝典之MFC视频教程及pdf
- vc++ 编写的基于TCP协议的客户/服务器
- VC++红色画笔五边形
- 视频聊天软件 VC++ 源代码
- 简易防火墙VC++
- 3阶魔方通用算法带图形界面vc++,核心
- VC++MFC制作的画图工具
- VC++课程设计一 福彩游戏(代码和报告
- VC++ 录音并生成wav文件
评论
共有 条评论