自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 魔兽私服Trinitycore架构设计分析之一

ManOS胞弟Trinitycore代码架构详细分析

2010-07-06 21:18:00 14651 3

转载 P2P之UDP穿透NAT

本文转自http://hi.baidu.com/jimwin/blog/item/6fc7822bd58124fce7cd400f.html源码下载: http://www.ppcn.net/upload/2005_08/05080112299104.rar参考:http://midcom-p2p.sourceforge.net/draft-ford-midcom-p2p-01.t

2009-02-12 15:53:00 1757 1

转载 TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞

本文转自http://hi.baidu.com/mnsch/blog/item/bcb0fcc453622fcd38db49f8.html这个标题用了两个顿号三个名称,其实说得是同一个东西,只是网上有不同的说法罢了,另外好像还有人叫TCP打孔(我的朋友小妞听说后问“要打孔啊,要不要我帮你去借个电钻过来啊?”“~!·¥%……·!”)。闲话少说,我们先看一下技术背景:Internet的

2009-02-12 15:43:00 1326 1

原创 静态变量浅析

静态变量静态变量存放在内存中的静态存储区。编译系统为其分配固定的存储空间。静态变量定义的形式是:static 类型标识符 变量名;静态变量有两种:一种是外部静态变量,另一种是内部静态变量。(1)外部静态变量。如果希望在一个文件中定义的外部变量的作用域仅局限于此文件中,而不能被其它文件所访问,则可以在定义此外部变量的类型说明符的前面使用static关键字。如:static f

2009-02-10 15:12:00 1747

原创 typename和编译器的恩怨情仇

 这几天在写一个红黑树的时候,突然发现模板类中的使用了STL容器的待定类型在编译时报错warning C4346: “std::vector::iterator” : 依赖名称不是类型        用“typename”为前缀来表示类型        c:/treecode/RedBlackTree/RedBlackTree.h(153) : 参见对正在编译的类模板实例化“RedBlackT

2008-12-15 16:54:00 2229

原创 eMule电骡嘚吧嘚

发现大家老问我一些只要你认真看就能看到的问题另外,我建议大家不要对电驴代码的具体实现太执着了,吸取他里面你需要的就行了,否着你就直接把他的界面部分改成一个服务,你直接调用就得了,在短时间内想写的比他好那不现实,尽管他实现的也不是很完美eMule有很多的变种,官方原版的那个是所有MOD的亲生父母,但下载下来以后还需要自己补上几个eMule用到的第三方库,veryCD版的eMule我是不推荐的

2008-12-04 11:50:00 1870

原创 GB2312和BIG5,Unicode/UTF8等编码之间的互相转化

在工作中经常会用到GB2312和BIG5,Unicode/UTF8等编码之间的互相转化,也有很多程序员对这个问题不断的提问,现在我把我的实现告诉大家.#include "Utf8.h"void ConvertGBKToUtf8(char *strGBK , int maxlen ){    int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)st

2008-07-24 16:32:00 3164 1

原创 WindowsSDK实现3D字体特效

  CFont m_fontLogo;LOGFONT logFont;memset(&logFont, 0, sizeof(LOGFONT));logFont.lfCharSet = DEFAULT_CHARSET;logFont.lfHeight =600;//宋体华文行楷ogFont.lfWeight = FW_HEAVY;   lstrcpyn(logFont.lfFaceNam

2008-07-24 16:21:00 992

原创 Lua5.1的变化导致以前的一些调用都不行了

在中如果要执行一个脚本需要这样 lua_State * L=luaL_newstate(); luaL_openlibs(L); /* 运行LUA脚本 */ luaL_dofile(L,"D://youbaoCode//script//main//oli.bs"); /* 清除 Lua */ lua_close(L); 好多以前的函数都要加一个L 

2008-07-24 16:15:00 892

原创 对easyemule的看法

你好,我建议你不要看VERYCD的,他实现的界面和里面改的东西,太令人失望了,推荐看eMulev0.49a.-MorphX

2008-07-09 13:27:00 2091

原创 对请教关于chunk的回复

你好,最近我正在忙一些DX 和OPenGL方面的编码,每时间到博客了,你仔细看PartFile这个类的实现,用心去看,在一些环节里加点详细的日志.通过日志分析

2008-07-09 13:22:00 782

原创 如何编译Console2

Console2是一个美化了的控制台,编译时需要boost,WTL,TabbingFramework. 如果你运气不好的话,你就会编译不出bjam,不要紧去下一个boost-jam-3.1.16-1-ntx86.zip, 修改user-config.jam (C:/boost_1_34_1/tools/build/v2/user-config.jam) 的MSVC configuration 如果

2008-07-09 13:17:00 1302

原创 ACE Proactor前摄器模式的服务器端代码

看到fisheeper发的留言,我突然感到了我刚接触ACE的时候,拿着马维达的那三本译作心惊胆战的就怕项目经理来问我搞的怎么样了?呵呵,其实不要怕ACE,他只不过是把各个操作系统支持的SOCKET模式封装了一下而已,写的时候设计模式用的多了点而已,你要问我有什么开源软件用了ACE,这个我只能告诉你我只知道JAWS是他的一个开源实现,看的时候找本设计模式的书放在旁边参考吧,呵呵,本人对设计模式持

2008-05-30 09:44:00 2726 2

原创 eMule电驴eDonkey从死到生

我带大家来研究一下eMule是如何运转的,先说一个额外的话题,我强烈鄙视,我思念的城市这位网友,他在eNet程序员论坛menuregister(false, "forumlist") » 挨踢生涯  中发表的文章:c++程序员修炼真经之四,是全文抄袭我的原创,极度鄙视这种用别人的智慧装点自己门面的人.首先大家找到emule.cpp CemuleApp::CemuleApp(LPC

2008-05-25 10:33:00 4352 2

原创 eMule电驴eDonkey源代码精辟分析

最近给一家公司写一个类似电驴的P2P客户端.写的相当的累,但是收获也很大,对电驴的代码进行了深入的分析,现在把所得贡献给大家,网上有很多对电驴协议的分析,其实有些地方是误导大家了,中国的程序员还是很小家子气,就是怕别人超过自己.进入正题,电驴的协议和各种常量参数定义在opcodes.h中,#define OP_EDONKEYHEADER  0xE3#define OP_KADEML

2008-05-24 21:12:00 13629 11

原创 c++程序员修炼真经之五

我们开始一个项目时通常都会做些什么呢?1.判断本程序是否已经有实例在运行BOOL IsPigRun(){ CString strIn; strIn = "hcnet3_running"; HANDLE  ghMutexExe =0; ghMutexExe = CreateMutex(NULL, TRUE , strIn); if (ghMutexExe == NULL || GetLast

2008-04-20 21:02:00 1596 1

原创 c++程序员修炼真经之四

多线程之六脉神剑#define MAX_JOBS  64HANDLE gDispatchJobs[MAX_JOBS];下面是假设的两个线程函数原型static UINT WINAPI pf_NetWorkThread(void *pVoid);static UINT WINAPI pf_CollectInfoThread(void *pVoid);实现UINT WINAPI CNetWorkCom

2008-04-20 14:33:00 1207

原创 c++程序员修炼真经之三

 谈一下跨平台网络通信应用程序的设计,第一种呢就是用预编译宏,在不同的宏定义下包含不同的头文件,调用不同的函数,这个麻烦了点,但好处是直截了当,调试方便,哪儿个步骤出来问题了然于胸,第二种呢就是用apr啦,头文件呢应该是象这样#include #include #include #include #include #include #include #include #include

2008-04-20 10:36:00 1770 2

原创 c++程序员修炼真经之二

 在实际项目中经常要操作数据库我们可以把要执行的存储过程或SQL语句写在脚本文件中,定时去加载,在程序运行过程中把实际数据和这些加载到内存的数据库操作组合起来,执行指定数据库操作.#if !defined(CSQLSCRIPTPARSE__INCLUDED_)#define CSQLSCRIPTPARSE__INCLUDED_#pragma once#include #include#

2008-04-19 20:01:00 1162

原创 把现有窗口布局快速移植到新的工程中

 如何把我们在现有工程中已经修饰好的窗口,各种控件的位置和属性快速完整的移植到新的工程中去呢?首先在原项目工程目录中找到*.rc文件,比如说我的这个项目对应的是SyncDataMonitor.rc,然后在打开他找到想要移植到新的工程的窗口的描述,IDD_SYNCDATAMONITOR_DIALOG DIALOGEX 0, 0, 561, 274STYLE DS_SETFONT | DS

2008-04-19 10:08:00 1288 2

原创 c++程序员修炼真经

c++程序员修炼真经第一章  闲话基础这些年项目做了一大堆,感慨C/C++程序员生存之悲凉,特写下这部手册供大家参考,我不是专家也不是权威,错误之处大家不要骂我,我只是为了让年轻的程序员有更多解决问题的方法.一:基础知识写程序先从小的地方做起不起眼的脚落往往容易出错1.请务必记住在不同的C++实现中,非char类型未必具有同样的大小,空类和空结构的大小不是0而是1测试程序:#include usi

2008-04-18 08:47:00 1559 1

空空如也

空空如也

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

TA关注的人

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