090822项目进展:学习emule源码1,
来源:互联网 发布:genmu根沐淘宝 编辑:程序博客网 时间:2024/05/22 21:48
了解一下eMule的源码,搜索一下关于微软p2p SDK的内容,加深对p2p文件共享的理解。
eMule的源码明明白白的放在互联网上,实实在在的宝贵资料,但是想看懂是不容易的,需要时间精力的投入,需要好的方法。现在也就打算了解个皮毛,有些初级的了解,下周再向高手请教一下内网p2p软件搜索的可行性。如果不可行的话就不考虑p2p资料的搜索了,转向数据库先把SearchTool项目的功能实现。虽然搞这个项目的初衷是学习网络,但目前看来也只是接触到了网络的应用层,再往下可能需要考虑其他的小项目了。
感谢在csdn上共享学习心得的前辈,提供了许多有用的资源。
1,eMule源码支持MS多个版本编译器的编译,可惜我现在还在用vc6,太土了,没试过vc9,目前暂时没准备深入去看源码,暂不升级编译了。
2,StringConversion.cpp .h提供了比较通用的转换字符串操作函数。有些函数的实现写在.h文件里面,似乎不是太好。字符的编码格式,ASCII,Unicode,utf8。
3,文件读写的类CFileDataIO:
class CFileDataIO
{
public:
virtual UINT Read(void* lpBuf, UINT nCount) = 0;
virtual void Write(const void* lpBuf, UINT nCount) = 0;
virtual ULONGLONG Seek(LONGLONG lOff, UINT nFrom) = 0;
virtual ULONGLONG GetPosition() const = 0;
virtual ULONGLONG GetLength() const = 0;
virtual uint8 ReadUInt8();
virtual uint16 ReadUInt16();
virtual uint32 ReadUInt32();
virtual uint64 ReadUInt64();
virtual void ReadUInt128(Kademlia::CUInt128 *pVal);
virtual void ReadHash16(uchar* pVal);
virtual CString ReadString(bool bOptUTF8);
virtual CString ReadString(bool bOptUTF8, UINT uRawSize);
virtual CStringW ReadStringUTF8();
virtual void WriteUInt8(uint8 nVal);
virtual void WriteUInt16(uint16 nVal);
....
};
之后的多继承,做出聚合可能更好。
class CSafeMemFile : public CMemFile, public CFileDataIO
{
}
4,有一个重载可变参数的函数
int CSafeBufferedFile::printf(LPCTSTR pszFmt, ...)
{
va_list args;
va_start(args, pszFmt);
int iResult = _vftprintf(m_pStream, pszFmt, args);
va_end(args);
if (iResult < 0) {
#if _MFC_VER>=0x0800
AfxThrowFileException(CFileException::genericException, _doserrno, m_strFileName);
#else
AfxThrowFileException(CFileException::generic, _doserrno, m_strFileName);
#endif
}
return iResult;
}
- 090822项目进展:学习emule源码1,
- 090823项目进展:学习emule源码2,文件管理类
- 090824项目进展:学习emule源码3,CAICHHashTree
- 090828项目进展:学习emule源码4,CAsyncSocketEx
- 090818项目进展:了解emule基础知识
- 090819项目进展:了解emule基础知识,猜想实现的方向
- 电驴 emule 源码分析 (1)
- 项目进展
- 项目进展
- 项目进展
- 项目进展
- 项目进展
- 项目进展
- 项目进展
- 项目进展
- 项目进展
- 项目进展
- 项目进展
- 使用hibernate 3 + p6spy+ log4j 写日志文件(一)
- poj 1735 flip game代码
- 思念永无止境
- ERP基本功能及架构图(转文)
- 用JAVA 编写的第1个操作sql server 2005数据库程序
- 090822项目进展:学习emule源码1,
- 动态规划算法
- microsoft source code analyzer for sql injection
- 第六章在代码段中使用栈6.2程序
- 千江有水千江月,万里无云万里天
- yii 框架 备忘笔记
- The sixth pattern------------Command Pattern
- The seventh pattern --------The Adapter Pattern and Facade Pattern
- 无法在com+目录中安装和配置程序集 错误:-2146233087