<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hangmwll的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hangmwll</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hangmwll]]></copyright><item><title><![CDATA[魔兽私服Trinitycore架构设计分析之一]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/5717012</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/5717012</guid><author>hangmwll</author><pubDate>Tue, 06 Jul 2010 21:18:00 +0800</pubDate><description><![CDATA[ManOS胞弟Trinitycore代码架构详细分析]]></description><category></category></item><item><title><![CDATA[P2P之UDP穿透NAT]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/3882220</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/3882220</guid><author>hangmwll</author><pubDate>Thu, 12 Feb 2009 15:53:00 +0800</pubDate><description><![CDATA[本文转自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]]></description><category></category></item><item><title><![CDATA[TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/3882172</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/3882172</guid><author>hangmwll</author><pubDate>Thu, 12 Feb 2009 15:43:00 +0800</pubDate><description><![CDATA[本文转自http://hi.baidu.com/mnsch/blog/item/bcb0fcc453622fcd38db49f8.html这个标题用了两个顿号三个名称，其实说得是同一个东西，只是网上有不同的说法罢了，另外好像还有人叫TCP打孔（我的朋友小妞听说后问“要打孔啊，要不要我帮你去借个电钻过来啊？”“~！·￥%……·！”）。闲话少说，我们先看一下技术背景：Internet的]]></description><category></category></item><item><title><![CDATA[静态变量浅析]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/3874215</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/3874215</guid><author>hangmwll</author><pubDate>Tue, 10 Feb 2009 15:12:00 +0800</pubDate><description><![CDATA[静态变量静态变量存放在内存中的静态存储区。编译系统为其分配固定的存储空间。静态变量定义的形式是：static 类型标识符 变量名；静态变量有两种：一种是外部静态变量，另一种是内部静态变量。（1）外部静态变量。如果希望在一个文件中定义的外部变量的作用域仅局限于此文件中，而不能被其它文件所访问，则可以在定义此外部变量的类型说明符的前面使用static关键字。如：static f]]></description><category></category></item><item><title><![CDATA[typename和编译器的恩怨情仇]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/3522545</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/3522545</guid><author>hangmwll</author><pubDate>Mon, 15 Dec 2008 16:54:00 +0800</pubDate><description><![CDATA[ 这几天在写一个红黑树的时候，突然发现模板类中的使用了STL容器的待定类型在编译时报错warning C4346: “std::vector::iterator” : 依赖名称不是类型        用“typename”为前缀来表示类型        c:/treecode/RedBlackTree/RedBlackTree.h(153) : 参见对正在编译的类模板实例化“RedBlackT]]></description><category></category></item><item><title><![CDATA[eMule电骡嘚吧嘚]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/3443412</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/3443412</guid><author>hangmwll</author><pubDate>Thu, 04 Dec 2008 11:50:00 +0800</pubDate><description><![CDATA[发现大家老问我一些只要你认真看就能看到的问题另外，我建议大家不要对电驴代码的具体实现太执着了，吸取他里面你需要的就行了，否着你就直接把他的界面部分改成一个服务，你直接调用就得了，在短时间内想写的比他好那不现实，尽管他实现的也不是很完美eMule有很多的变种,官方原版的那个是所有MOD的亲生父母，但下载下来以后还需要自己补上几个eMule用到的第三方库，veryCD版的eMule我是不推荐的]]></description><category></category></item><item><title><![CDATA[GB2312和BIG5,Unicode/UTF8等编码之间的互相转化]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2705582</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2705582</guid><author>hangmwll</author><pubDate>Thu, 24 Jul 2008 16:32:00 +0800</pubDate><description><![CDATA[在工作中经常会用到GB2312和BIG5,Unicode/UTF8等编码之间的互相转化,也有很多程序员对这个问题不断的提问,现在我把我的实现告诉大家.#include "Utf8.h"void ConvertGBKToUtf8(char *strGBK , int maxlen ){    int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)st]]></description><category></category></item><item><title><![CDATA[WindowsSDK实现3D字体特效]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2705534</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2705534</guid><author>hangmwll</author><pubDate>Thu, 24 Jul 2008 16:21:00 +0800</pubDate><description><![CDATA[  CFont m_fontLogo;LOGFONT logFont;memset(&logFont, 0, sizeof(LOGFONT));logFont.lfCharSet = DEFAULT_CHARSET;logFont.lfHeight =600;//宋体华文行楷ogFont.lfWeight = FW_HEAVY;   lstrcpyn(logFont.lfFaceNam]]></description><category></category></item><item><title><![CDATA[Lua5.1的变化导致以前的一些调用都不行了]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2705513</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2705513</guid><author>hangmwll</author><pubDate>Thu, 24 Jul 2008 16:15:00 +0800</pubDate><description><![CDATA[在中如果要执行一个脚本需要这样 lua_State * L=luaL_newstate(); luaL_openlibs(L); /* 运行LUA脚本 */ luaL_dofile(L,"D://youbaoCode//script//main//oli.bs"); /* 清除 Lua */ lua_close(L); 好多以前的函数都要加一个L ]]></description><category></category></item><item><title><![CDATA[对easyemule的看法]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2628605</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2628605</guid><author>hangmwll</author><pubDate>Wed, 09 Jul 2008 13:27:00 +0800</pubDate><description><![CDATA[你好,我建议你不要看VERYCD的,他实现的界面和里面改的东西,太令人失望了,推荐看eMulev0.49a.-MorphX]]></description><category></category></item><item><title><![CDATA[对请教关于chunk的回复]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2628594</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2628594</guid><author>hangmwll</author><pubDate>Wed, 09 Jul 2008 13:22:00 +0800</pubDate><description><![CDATA[你好,最近我正在忙一些DX 和OPenGL方面的编码,每时间到博客了,你仔细看PartFile这个类的实现,用心去看,在一些环节里加点详细的日志.通过日志分析]]></description><category></category></item><item><title><![CDATA[如何编译Console2]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2628578</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2628578</guid><author>hangmwll</author><pubDate>Wed, 09 Jul 2008 13:17:00 +0800</pubDate><description><![CDATA[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 如果]]></description><category></category></item><item><title><![CDATA[ACE Proactor前摄器模式的服务器端代码]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2495193</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2495193</guid><author>hangmwll</author><pubDate>Fri, 30 May 2008 09:44:00 +0800</pubDate><description><![CDATA[看到fisheeper发的留言，我突然感到了我刚接触ACE的时候，拿着马维达的那三本译作心惊胆战的就怕项目经理来问我搞的怎么样了？呵呵，其实不要怕ACE,他只不过是把各个操作系统支持的SOCKET模式封装了一下而已，写的时候设计模式用的多了点而已，你要问我有什么开源软件用了ACE，这个我只能告诉你我只知道JAWS是他的一个开源实现，看的时候找本设计模式的书放在旁边参考吧，呵呵，本人对设计模式持]]></description><category></category></item><item><title><![CDATA[eMule电驴eDonkey从死到生]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2479472</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2479472</guid><author>hangmwll</author><pubDate>Sun, 25 May 2008 10:33:00 +0800</pubDate><description><![CDATA[我带大家来研究一下eMule是如何运转的，先说一个额外的话题，我强烈鄙视，我思念的城市这位网友，他在eNet程序员论坛menuregister(false, "forumlist")  » 挨踢生涯  中发表的文章:c++程序员修炼真经之四，是全文抄袭我的原创，极度鄙视这种用别人的智慧装点自己门面的人．首先大家找到emule.cpp CemuleApp::CemuleApp(LPC]]></description><category></category></item><item><title><![CDATA[eMule电驴eDonkey源代码精辟分析]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2478265</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2478265</guid><author>hangmwll</author><pubDate>Sat, 24 May 2008 21:12:00 +0800</pubDate><description><![CDATA[最近给一家公司写一个类似电驴的P2P客户端．写的相当的累，但是收获也很大，对电驴的代码进行了深入的分析，现在把所得贡献给大家，网上有很多对电驴协议的分析，其实有些地方是误导大家了，中国的程序员还是很小家子气，就是怕别人超过自己．进入正题，电驴的协议和各种常量参数定义在opcodes.h中，#define OP_EDONKEYHEADER  0xE3#define OP_KADEML]]></description><category></category></item><item><title><![CDATA[c++程序员修炼真经之五]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2309882</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2309882</guid><author>hangmwll</author><pubDate>Sun, 20 Apr 2008 21:02:00 +0800</pubDate><description><![CDATA[我们开始一个项目时通常都会做些什么呢？1.判断本程序是否已经有实例在运行BOOL IsPigRun(){ CString strIn; strIn = "hcnet3_running"; HANDLE  ghMutexExe =0; ghMutexExe = CreateMutex(NULL, TRUE , strIn); if (ghMutexExe == NULL || GetLast]]></description><category></category></item><item><title><![CDATA[c++程序员修炼真经之四]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2309171</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2309171</guid><author>hangmwll</author><pubDate>Sun, 20 Apr 2008 14:33:00 +0800</pubDate><description><![CDATA[多线程之六脉神剑#define MAX_JOBS  64HANDLE gDispatchJobs[MAX_JOBS];下面是假设的两个线程函数原型static UINT WINAPI pf_NetWorkThread(void *pVoid);static UINT WINAPI pf_CollectInfoThread(void *pVoid);实现UINT WINAPI CNetWorkCom]]></description><category></category></item><item><title><![CDATA[c++程序员修炼真经之三 ]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2308608</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2308608</guid><author>hangmwll</author><pubDate>Sun, 20 Apr 2008 10:36:00 +0800</pubDate><description><![CDATA[ 谈一下跨平台网络通信应用程序的设计，第一种呢就是用预编译宏，在不同的宏定义下包含不同的头文件，调用不同的函数，这个麻烦了点，但好处是直截了当，调试方便，哪儿个步骤出来问题了然于胸，第二种呢就是用apr啦，头文件呢应该是象这样#include #include #include #include #include #include #include #include #include ]]></description><category></category></item><item><title><![CDATA[c++程序员修炼真经之二]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2307834</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2307834</guid><author>hangmwll</author><pubDate>Sat, 19 Apr 2008 20:01:00 +0800</pubDate><description><![CDATA[ 在实际项目中经常要操作数据库我们可以把要执行的存储过程或SQL语句写在脚本文件中，定时去加载，在程序运行过程中把实际数据和这些加载到内存的数据库操作组合起来，执行指定数据库操作．#if !defined(CSQLSCRIPTPARSE__INCLUDED_)#define CSQLSCRIPTPARSE__INCLUDED_#pragma once#include #include#]]></description><category></category></item><item><title><![CDATA[把现有窗口布局快速移植到新的工程中]]></title><link>https://blog.youkuaiyun.com/hangmwll/article/details/2306403</link><guid>https://blog.youkuaiyun.com/hangmwll/article/details/2306403</guid><author>hangmwll</author><pubDate>Sat, 19 Apr 2008 10:08:00 +0800</pubDate><description><![CDATA[ 如何把我们在现有工程中已经修饰好的窗口，各种控件的位置和属性快速完整的移植到新的工程中去呢？首先在原项目工程目录中找到*.rc文件,比如说我的这个项目对应的是SyncDataMonitor.rc，然后在打开他找到想要移植到新的工程的窗口的描述，IDD_SYNCDATAMONITOR_DIALOG DIALOGEX 0, 0, 561, 274STYLE DS_SETFONT | DS]]></description><category></category></item></channel></rss>