亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bencode.cpp

?? linux系統下bt的客戶端實現。 采用的是c++
?? CPP
字號:
#include <stdlib.h>#include <unistd.h>#include <stdio.h>#include <fstream>#include <sys/stat.h>#include <sys/types.h>#include <iostream>#include <fcntl.h>#include <errno.h>#include "Btcontent.h"#include "Bencode.h"#include "Sha.h"using namespace std;BencodeDict *create_dictionary(const char *path){    int fd;    size_t len;    struct stat sb;    char *buf, *s;    Bencode *pinfo ;	std::string keylist;    BencodeDict *pdict = NULL;    if (-1 == (fd = open(path, O_RDONLY)) || -1 == fstat(fd, &sb))	return NULL;    buf = new char[sb.st_size + 1];    if (NULL == buf)	return pdict;    s = buf;    len = 0;    for (; len != sb.st_size;) {	int n;	if (0 == (n = read(fd, s, sb.st_size - len)))	    break;	else {	    if (n < 0)		if (EINTR == errno)		    continue;		else		    break;	}	len += n;	s += n;    }    if (len < sb.st_size)	goto err;    *s = '\0';    pdict = new BencodeDict;    if (NULL == pdict || 0 == pdict->Decode(buf, sb.st_size + 1))		goto err;    keylist = "info";    pinfo = query_dict(pdict, keylist);    uint64_t totallen;		if( (totallen = pinfo->Encode(buf, sb.st_size)) > 0)	{/*    	cout << totallen << endl;		for(int i = 0; i< totallen ; i++)			cout<<buf[i];		cout << endl << endl <<endl;*/	}		Sha1((unsigned char*)buf, totallen, BTCONTENT.GetInfoHash());/*	for(int i = 0; i < 20; i++)	{		cout << md[i];	}	cout << endl;	*/    return pdict;  err:delete pdict;    delete []buf;    return NULL;}Bencode *query_dict(Bencode * pcode, std::string & keylist){    if (NULL == pcode || keylist.empty()	|| bencode_dict != pcode->m_enumType)	return NULL;    return ((BencodeDict *) pcode)->Search(keylist);}bool search_dictionary(Bencode * pcode, std::string & keylist,		       char **pbuf, int *pint){    bool b = false;    Bencode *ret;    int len;    if (NULL == pcode || bencode_dict != pcode->m_enumType	|| NULL == (ret = ((BencodeDict *) pcode)->Search(keylist)))	return false;    switch (ret->m_enumType) {    case bencode_int:	if (pint) {	    *pint = ((BencodeInt *) ret)->m_nValue;	    b = true;	}	break;    case bencode_str:	if (pbuf) {	    len = ((BencodeString *) ret)->m_strValue.length();	    *pbuf = new char[len + 1];	    if (NULL == *pbuf)		return false;	    memcpy(*pbuf, ((BencodeString *) ret)->m_strValue.c_str(),		   len);	    (*pbuf)[len] = '\0';	    if (pint)		*pint = len;	    std::cout << len << std::endl;	    b = true;	}	break;    default:	break;    }    return b;}void delete_dictionary(Bencode * pcode){    delete pcode;} size_t BencodeInt::Decode(char *pch, size_t len){    char *p = pch + 1;    if (2 > len)	return 0;    for (; len && isdigit(*p); p++, len--);    if (!len || *p != END_DELIMITER)	return 0;    m_nValue = strtol(pch + 1, (char **) 0, 10);    return (size_t) (p - pch + 1);}uint64_t BencodeInt::Encode(char *pch, size_t len){	char *p,dt[100];		p = pch;	*p++ = 'i';	snprintf(dt, 100, "%d", m_nValue);	//ltoa(m_nValue, dt, 10);	memcpy(p, dt, strlen(dt));	p += strlen(dt);	*p++ = 'e';		return p - pch;}BencodeInt::~BencodeInt(){}size_t BencodeString::Decode(char *pch, size_t len){    long int n;    char *psave, *p = pch;    if (2 > len)	return 0;    for (; len && *p != ':'; p++, len--);    if (!len)	return 0;    n = strtol(pch, (char **) 0, 10);    psave = p + 1;    for (; len && n; len--, n--, p++);    if (!len)	return 0;    std::string tempstr(psave, p + 1);    m_strValue += tempstr;    return p - pch + 1;}uint64_t BencodeString::Encode(char* pch, size_t len){	char* p, dt[64];	int n;	p = pch;	n = m_strValue.length();	snprintf(dt, 64, "%d", n);	//itoa(n, dt, 10);	memcpy(p, dt, strlen(dt));	p += strlen(dt);	*p++ = ':';	memcpy(p, m_strValue.c_str(), n);	p += n;	return p - pch;}BencodeString::~BencodeString(){}size_t BencodeList::Decode(char *pch, size_t len){    char *p = pch + 1;    size_t n;    Bencode *pnew;    len--;    while (*p != END_DELIMITER && len) {	switch (*p) {	case 'i':	    pnew = new BencodeInt;	    break;	case 'l':	    pnew = new BencodeList;	    break;	case 'd':	    pnew = new BencodeDict;	    break;	default:	    pnew = new BencodeString;	}	n = pnew->Decode(p, len);	m_list.push_back(pnew);	p += n;	len -= n;    }    return (size_t) (p - pch + 1);}uint64_t BencodeList::Encode(char* pch, size_t len){	char *p;	std::vector < Bencode * >::iterator iter;	std::vector < Bencode * >::iterator iter_end;	p = pch;	iter = m_list.begin();	iter_end = m_list.end();    *p++ = 'l';	for(; iter != iter_end; iter++)	{		size_t nfeed;		nfeed = (*iter)->Encode(p, len - (p - pch));		p += nfeed;	}	*p++ = 'e';		return p - pch;	}BencodeList::~BencodeList(){    std::vector < Bencode * >::iterator iter;    std::vector < Bencode * >::iterator iter_end;    iter = m_list.begin();    iter_end = m_list.end();    for (; iter != iter_end; iter++)	delete *iter;}size_t BencodeDict::Decode(char *pch, size_t len){    char *p = pch + 1;    size_t n;    BencodeString *pstr;    Bencode *pnew;    len--;    while (*p != END_DELIMITER && len) {	pstr = new BencodeString;	n = pstr->Decode(p, len);	p += n;	len -= n;		switch (*p) {	case 'i':	    pnew = new BencodeInt;	    break;	case 'l':	    pnew = new BencodeList;	    break;	case 'd':	    pnew = new BencodeDict;	    break;	default:	    pnew = new BencodeString;	}	n = pnew->Decode(p, len);	p += n;	len -= n;	m_map.insert(std::map < std::string,		     Bencode * >::value_type(pstr->m_strValue, pnew));	delete pstr;    }    return (size_t) (p - pch + 1);}uint64_t BencodeDict::Encode(char* pch, size_t len){	char *p = pch;	std::map<string, Bencode*>::iterator iter, iter_end;	iter = m_map.begin();	iter_end = m_map.end();	*p++ = 'd';	for(;iter != iter_end; )	{		size_t nfeed;				int slen;		char dt[64];		slen = (*iter).first.length();		snprintf(dt, 64, "%d", slen);		memcpy(p, dt, strlen(dt));		p += strlen(dt);		*p++ = ':';		memcpy(p, (*iter).first.c_str(), slen);		p += slen;			nfeed = (*iter).second->Encode(p, len -(p - pch));		p += nfeed;		iter++;				}	*p++ = 'e';	return (p - pch);}Bencode *BencodeDict::Search(std::string & keylist){    Bencode *ret = NULL;    std::string::size_type pos = 0;    std::map < std::string, Bencode * >::iterator iter;    std::map < std::string, Bencode * >::iterator iter_end;    iter = m_map.begin();    iter_end = m_map.end();    pos = keylist.find_first_of('|', pos);    if (std::string::npos == pos) {	while (iter != iter_end) {	    if (keylist == (*iter).first)		return ret = (*iter).second;	    iter++;	}    }    else {	while (iter != iter_end) {	    Bencode *pcode = (*iter).second;	    iter++;	    if (bencode_dict != pcode->m_enumType)		continue;	    keylist.erase(0, pos + 1);	    if (NULL != (ret = ((BencodeDict *) pcode)->Search(keylist)))		return ret;	}    }    return ret;}BencodeDict::~BencodeDict(){    std::map < std::string, Bencode * >::iterator iter;    std::map < std::string, Bencode * >::iterator iter_end;    iter = m_map.begin();    iter_end = m_map.end();    for (; iter != iter_end; iter++)	delete(*iter).second;}void BencodeInt::printout(){    std::cout << m_nValue << std::endl;} void BencodeString::printout(){    std::cout << m_strValue << std::endl;}void BencodeList::printout(){    std::vector < Bencode * >::iterator iter;    std::vector < Bencode * >::iterator iter_end;    iter = m_list.begin();    iter_end = m_list.end();		cout<<"########################list#########################"<<endl;    while (iter_end != iter) {	(*iter)->printout();	iter++;    }		cout<<"########################list-end#####################"<<endl;}void BencodeDict::printout(){    std::map < std::string, Bencode * >::iterator iter;    std::map < std::string, Bencode * >::iterator iter_end;    iter = m_map.begin();    iter_end = m_map.end();	cout<<"**********************dictionary*********************"<<endl;    while (iter_end != iter) {	cout << (*iter).first << endl;	(*iter).second->printout();	iter++;    }	cout<<"********************dictionary-end*******************"<<endl;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女同ⅹxx女同tv| 日韩欧美在线一区二区三区| 韩国精品在线观看| 奇米精品一区二区三区在线观看一| 亚洲一区二区三区四区在线免费观看 | 蜜臀久久99精品久久久久宅男| 亚洲最大成人网4388xx| 亚洲精品午夜久久久| 亚洲第一福利一区| 午夜天堂影视香蕉久久| 日韩av一级电影| 精品亚洲欧美一区| 成人av影视在线观看| 91香蕉视频mp4| 欧美四级电影在线观看| 7777女厕盗摄久久久| 日韩一区二区免费电影| 久久久99免费| 最近中文字幕一区二区三区| 亚洲福利电影网| 青青国产91久久久久久| 国产久卡久卡久卡久卡视频精品| 国产精品自产自拍| 日本电影亚洲天堂一区| 制服丝袜亚洲播放| 日韩三级视频在线看| 欧美精品一区二区在线观看| 国产精品全国免费观看高清| 一区二区三区.www| 韩国av一区二区三区四区| 不卡的看片网站| 欧美高清视频www夜色资源网| 精品福利在线导航| 亚洲精品视频在线看| 日本女人一区二区三区| 成人黄色电影在线 | 色8久久精品久久久久久蜜| 欧美人体做爰大胆视频| 国产日韩视频一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美日本在线观看| 欧美激情一区二区| 亚洲成人av电影| 国产成人精品网址| 在线观看成人免费视频| 久久色视频免费观看| 一级日本不卡的影视| 精品一区二区久久久| 欧美伊人久久大香线蕉综合69| 久久久777精品电影网影网| 亚洲国产日韩av| www.av精品| 国产色产综合色产在线视频| 视频一区二区欧美| 91免费看片在线观看| 久久久91精品国产一区二区精品 | 国产精品亚洲а∨天堂免在线| 欧美性受极品xxxx喷水| 国产精品麻豆99久久久久久| 经典三级视频一区| 欧美高清视频不卡网| 亚洲福利视频导航| 欧美日韩在线三区| 樱花影视一区二区| 国产精品夜夜爽| 欧美一区二区三区公司| 亚洲国产成人高清精品| 日本道精品一区二区三区| 国产精品久久久久影视| 成人一级片在线观看| 久久久91精品国产一区二区精品| 蜜桃视频在线观看一区二区| 在线播放一区二区三区| 午夜日韩在线电影| 欧美日韩高清在线播放| 日韩精品午夜视频| 欧美妇女性影城| 日本成人在线一区| 91精品国产综合久久久久久久| 日韩精品乱码免费| 欧美一二三在线| 极品尤物av久久免费看| 精品不卡在线视频| 国产毛片精品视频| 亚洲国产精品国自产拍av| 成人免费观看av| 亚洲免费成人av| 欧美日韩一二三区| 蜜臀av一区二区三区| 精品对白一区国产伦| 国产91清纯白嫩初高中在线观看 | 成人免费不卡视频| 中文字幕亚洲一区二区av在线| 岛国精品在线观看| 亚洲码国产岛国毛片在线| 欧美三级一区二区| 久久国产精品一区二区| 国产欧美一区二区三区在线看蜜臀| 国产jizzjizz一区二区| 亚洲黄色片在线观看| 欧美性xxxxxxxx| 老司机精品视频一区二区三区| 日韩精品一区二区三区四区| 国产福利一区二区三区| 亚洲综合丁香婷婷六月香| 在线成人免费视频| 国产精品456露脸| 亚洲国产综合在线| 日韩欧美www| 在线免费观看日韩欧美| 国内精品久久久久影院薰衣草| 国产精品色婷婷久久58| 6080日韩午夜伦伦午夜伦| 白白色亚洲国产精品| 日韩av不卡在线观看| 中文子幕无线码一区tr| 制服丝袜亚洲播放| 国产91精品一区二区麻豆亚洲| 亚洲已满18点击进入久久| 亚洲精品一区二区三区在线观看| 日本黄色一区二区| 国产精品白丝jk白祙喷水网站| 亚洲成av人在线观看| 欧美国产日韩一二三区| 日韩一级免费观看| 欧美亚洲一区二区在线| 成人精品一区二区三区四区| 美女国产一区二区| 亚洲成人在线免费| 亚洲欧美日韩中文字幕一区二区三区| 精品国产一区二区三区忘忧草| 欧美专区日韩专区| 色综合视频在线观看| 国产激情一区二区三区桃花岛亚洲| 午夜精品123| 亚洲一区二区在线播放相泽| 成人欧美一区二区三区白人 | 欧美激情一区二区三区不卡| 欧美一区二区三区日韩视频| 欧美色成人综合| 在线精品视频一区二区三四| 91麻豆视频网站| 成人av网址在线观看| 国产福利不卡视频| 国产一区二区按摩在线观看| 麻豆freexxxx性91精品| 爽好久久久欧美精品| 亚洲bt欧美bt精品| 污片在线观看一区二区| 亚洲午夜久久久久中文字幕久| **网站欧美大片在线观看| 中文字幕不卡在线播放| 亚洲国产精品ⅴa在线观看| 久久精品视频在线免费观看 | 亚洲人成网站在线| 亚洲欧美日韩国产中文在线| 亚洲人成电影网站色mp4| **欧美大码日韩| 亚洲一区欧美一区| 亚洲综合色成人| 午夜在线电影亚洲一区| 日韩av网站在线观看| 韩国精品久久久| 成人av资源下载| 成人福利视频网站| 91亚洲男人天堂| 在线观看av一区二区| 欧美精品久久一区| 日韩美女视频在线| 久久综合色鬼综合色| 国产精品福利一区二区三区| 国产女主播视频一区二区| 国产精品女同互慰在线看| 亚洲女同女同女同女同女同69| 亚洲r级在线视频| 久99久精品视频免费观看| 国产福利精品一区| 在线免费观看视频一区| 欧美成人一区二区三区在线观看| 精品粉嫩aⅴ一区二区三区四区| 中文字幕佐山爱一区二区免费| 亚洲最新在线观看| 精品综合免费视频观看| 99免费精品视频| 欧美无砖专区一中文字| 久久夜色精品国产噜噜av| 日韩美女视频19| 麻豆91免费看| 日本高清不卡aⅴ免费网站| 日韩欧美一区二区不卡| 中文字幕一区二区三区不卡| 亚洲777理论| 成人h版在线观看| 欧美一区二区三区爱爱| 成人免费视频在线观看| 老司机免费视频一区二区| 91色婷婷久久久久合中文| 欧美一区二区久久久| 亚洲男同性恋视频| 国产乱码一区二区三区|