自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 IOCP的笔记及理解

WIN下最好的网络模型可能就是IOCP完成端口了吧经过几天的研究可以使用以下比喻来理解完成端口,完成端口中的完成表示IO操作已经完成后才通知程序,完成端口可以更形象的想象成是完成队列这里我将完成队列想象成一个管道。网络库初始化部分省略第一步:首先主负责人(主线程)在一个房子(服务器)里建立一个管道程序实现HANDLE hIOCP = CreateIoCompleti

2012-10-23 00:32:06 434

原创 登录器项目笔记

第一:hook程序的API函数时候,自己定义的api函数应该注意参数传入方式,是stdcll还是其他第二:读取配置文件的时候使用的API是GetPrivateProfileInt和GetPrivateProfileString,它们最后一个参数是配置文件路径,如果写相对路径的话,如在当前目录下就要用".\\xxxx.ini"待续。。。

2012-10-22 11:43:31 367

转载 老张喝茶 教你同步异步 阻塞与非阻塞

老张爱喝茶,废话不说,煮开水。出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。1 老张把水壶放到火上,立等水开。(同步阻塞)老张觉得自己有点傻2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪

2012-10-10 12:19:58 430

原创 关于HOOK WINAPI函数

有时候要研究游戏封包或者需要对其进行修改,则最好的方法是HOOK他的网络API函数,如用于发送封包的send函数和用于接受的recv,WSARecv函数等等。将HOOK代码写到DLL中,然后通过修改游戏运行程序的输入表去加载这个dll从而达到劫持API的作用!修改PE文件的输入表方法:最简单的就是试用PE工具LordPE了,打开程序,选择目录,点击输入表,然后右键增加输入表

2012-10-08 15:52:56 1586

原创 metin C++加解密算法

typedef unsigned long DWORD;typedef unsigned char BYTE;//加解密常量const DWORD c_dwConst = 0x61C88647;void yt_code(BYTE* pDst, BYTE* pSrc,int nSrcLen);void yt_encode(BYTE* pDst, BYTE* pSrc, int nSrc

2012-04-04 22:38:50 481 1

转载 Lesson20 Hook与数据编程

通过安装Hook过程,可以用来屏蔽消息队列中某些消息The SetWindowsHookEx function installs an application-defined hook procedure into a hook chain. You would install a hook procedure to monitor the system for certain types

2012-02-22 15:26:55 648

转载 Lesson19 动态链接库DLL

Windows API中的所有函数都包含在DLL中。其中有三个最重要的DLL,Kernel32.dll,它包含用于管理内存、进程和线程的各个函数;User32.dll,它包含用于执行用户界面任务(如窗口的创建和消息的传送)的各个函数;GDI32.dll,它包含用于画图和显示文本的各个函数。静态库和动态库静态库:函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的

2012-02-22 15:25:48 386

转载 Lesson18 Active控件

容器和服务器程序容器应用程序时可以嵌入或链接对象的应用程序。Word就是容器应用程序。服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序。Excel就是服务器应用程序。ActiveX控件不能独立运行,它必须被嵌入容器应用程序中,和容器应用程序一起运行。 Dispatch maps调度映射,主要是MFC提供让外部应用程序可以访问控件的属性和方法

2012-02-22 15:25:24 472

转载 Lesson17进程间通信

有四种方法1.剪贴板 a.创建个ClipBoard的对话框应用程序,加两EditBox和两个Button发送接收。 b.具体代码:发送端代码:if(OpenClipboard()){ CString str; HANDLE hClip; char *pBuf; EmptyClipboard(); GetDlgItemText(IDC_EDIT_S

2012-02-22 15:24:35 331

转载 Lesson 16 线程同步与异步套接字

1.       事件对象事件对象同上一课中的互斥对象一样属于内核对象,它包含三个成员:使用读数,用于指明该事件是一个自动重置的还是人工重置的事件的布尔值,用于指明该事件处于已通知状态还是未通知状态的布尔值.当人工重置的事件对象得到通知时,等待该事件对象的所有纯种无变为可高度线程,而一个自动重置的事件对象得到通知时,等待该事件对象的线程中人有一个变为可高度线程.所以一般使用线程同步

2012-02-22 15:20:14 713

转载 Lesson 15 多线程

1.       程序,进程,线程A: 程序是计算机指令的集合,它以文件的形式存储在磁盘上,而进程通常被定义为一个正在运行的程序的实例,是一个程序在其自身的地址空间中的一次执行活动.一个程序可以对应多个进程.进程是资源申请,高度和独立运行的单位,因此,它使用系统中的运行资源,而程序不能申请系统资源,不能被系统高度也不能作为独立运行的单位,因此它不占系统运行资源.进程组成:

2012-02-22 14:29:10 343

转载 Lesson14 网络编程

sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);基于TCP的socket编程是采用的流式套接字(SOCK_STREAM)。基于UDP采用的数据报套接字(SOCK_DGRAM).1.TCP流式套接字的编程步骤在使用之前须链接库函数:工程->设置->Link->输入ws2_32.lib,OK

2012-02-22 14:24:56 317

转载 Lesson 13: 文档串行化

1.    CArchive在菜单打开保存时的代码CFile file("1.txt",CFile::modeCreate | CFile::modeWrite);CArchive ar(&file,CArchive::store);int i=4;char ch='a';float f=1.3f;CString str("http://www.su

2012-02-22 14:24:04 395

转载 Lesson12 文件操作

1.       常量指针与指针常量的区分 char ch[5]="lisi"; const char *pStr=ch;//const在*之前,表明指针指向的内容为常量,即为常量指针,但指针可指向其它变量。 char * const pStr=ch;//const在*之后,表明指针的地址不能改变,即为指针常量,但指针所指向的内容是可以改变的;const char * cons

2012-02-22 14:22:57 453

转载 Lesson11 图形的保存和重绘

1.    创建4个菜单,为其添加消息响应,用成员变量保存绘画类型。添加LButtonDown和Up消息。2.   当窗口重绘时,如果想再显示原先画的数据,则需要保存数据。为此创建一个新类来记录绘画类型和两个点。class CGraph {public:CPoint m_ptOrigin;//起点CPoint m_ptEnd;//终点UINT

2012-02-22 14:21:51 328

转载 Lesson10: 绘图控制

1.    画图:   a.创建四个菜单,为其添加消息响应;   b.在View中添加m_DrawType,保存绘画类型;   c.增加成员变量,m_PtOrigin,当按下鼠标左键时,保存此点;   d.在OnLButtonUp中画点,线,矩形,椭圆,别忘记设置成透明画刷2.    为其添加一个设置对话框(线型和线宽)   a.创建对话框,为其创建

2012-02-22 14:21:20 246

转载 Lesson9: 定制应用程序的外观

1,修改外观和图标可以在MainFrm中进行,而修改背景和光标只能在View中进行。为什么?因为view的显示挡在了MainFrame的前面。a.在MainFrame中PreCreateWindow()中,在窗口创建之前,用重新注册窗口类的方法,比较麻烦。在PreCreateWindow()中修改也可以用简单的方法,用全局函数//cs.lpszClass=AfxRegist

2012-02-22 14:20:58 291

转载 Lesson7: 对话框编程

1.       Windows应用程序工作的基本流程是从用户那里得到数据,经过相应的处理之后,现把处理结果输出到屏幕,打印机或者绵输出设备。这就需要用到Windows应用程序的用户接口对话框。对话框就是一个窗口,它不公可以接收消息,而且还可以被移动和关闭,甚至可以在它的客户区中进行绘图。相当于一个窗口,在它上面能够旋转各种标准控件和扩展控件。都是由CWnd类派生来 2.

2012-02-22 14:20:20 299

转载 Lesson6: 菜单编程

1.       MFC中的顶层菜单默认为弹出菜单(Pop-up),它是不能用来作命令响应的,当取消Pop-up选项后可接受命令响应。2.       消息的分类:标准消息,命令消息,通告消息。[标准消息]:除WM_COMMAND之外,所有以WM_开头的消息。从CWnd类派生的类都可以接收到这一消息[命令消息]:来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMM

2012-02-22 14:18:57 260

转载 Lesson5: 文本编程

1,创建插入符:void CreateSolidCaret( int nWidth, int nHeight );//创建插入符void CreateCaret( CBitmap* pBitmap );//创建位图插入符void ShowCaret( );//显示插入符void HideCaret( );//隐藏插入符static void PASCAL S

2012-02-22 14:14:03 240

转载 Lesson4: 简单绘图

1.       在单文档中view挡在MainFrame的前面。此时如果编写针对MainFrame的mouseClick事件,将不会有反应。因为MFC视类窗口是覆盖在框架窗口上的,因此框架窗口不能感到鼠标消息.2.       MFC的消息映射机制:在每个能接收和处理消息的类中,定义一个消息和消息函数对照表,即消息映射表.在消息映射表中,消息与对应的消息处理函数指

2012-02-22 14:02:04 278

转载 Lesson3: MFC框架程序剖析

1.       MFC简介:MFC(Microsoft Foundation Class,微软基础类库)是微软为了简化程序员的开发工作所开发的一套C++类的集合,是一套面向对象的函数库,以为的方式提供给用户使用.利用这些类,可以有效发帮助程序员完成Windows应用程序的开发MFC AppWizard是一个辅助生成源代码的向导工具,它可以帮助我们自动生成基于MFC框架的源代码.在向导

2012-02-22 13:59:58 312

转载 Lesson2: 掌握C++基本语法

1.       C++主要特点:封装性(Encapsulation):把数据与操作数据的函数组织在一起,使程序结构更加紧凑,提高类内部数据的安全性。继承性(Inheritance):增加了软件的可扩充性及代码重用性;多态性(Polymorphism):使设计人员在设计程序时可以对问题进行更好的抽象,有利于代码的维护和可重用2.       C++中几个特性的实现技

2012-02-22 13:59:00 238

转载 Lesson1: Windows程序运行原理及程序编写流程

窗口产生过程,句柄原理,消息队列,回调函数,窗口关闭与应用程序退出的工作关系,使用VC++的若干小技巧,stdcall与Lessonecl调用规范的比较,初学者常犯错误及注意事项。1.       Windows API与Win32 SDK操作系统提供了各种方便开发Windows应用程序的编程接口,所的函数都在Windows。h头文件中声明。Win32 SDK(Softwa

2012-02-22 13:58:17 408

转载 一个使用的错误调试方法

在Visual C++中,可以在监视窗口添加 $err,hr 一行来实时现实错误。调试过程中,该项相当于在每次调用API函数之后调用GetLastError函数。其值由两部分组成,一个是错误代码(十六进制),另一个是错误代码所对应的文本提示。安装VS2010之后在安装VS2008的MSDN之后会出错误解决办法对于32位机器,查找注册表的项:[HKEY_CLASS

2012-02-19 17:30:25 259

原创 java 接口使用例程及匿名类中类的使用

java中的接口(interface)是一种只包含了静态常量和抽象方法的特殊抽象类。接口的使用可以实现即插即用的功能。比如:电脑城的组装人员可以直接将PCI设备(网卡,声卡,显卡等设备)直接插到主板的PCI槽中,就可以使用PCI的功能因为主板制造厂商跟PCI设备的制造厂商是按照同一的PCI规范来设计自己的产品的下面定义了几个类和接口//PCI接口,相当与现实中的PC

2012-02-04 15:46:19 800

原创 java类中的初始化模块

如果类中有多个构造函数都共享一段代码,并且各个构造函数之后不会调用其他的构造函数,那么可以将这段公共的代码放在初始化模块中。初始化模块是用{}括起来的语句块,它位于类的声明中,但不是包括在类方法或者类的构造函数中的。它的作用就是相当于将初始化模块放到每个构造函数的最开始位置,用于初始化对象。一个类可以有多个初始化模块,执行顺序按照在类中出现的顺序执行。类中的初始化模块包括实

2012-02-03 15:17:30 2260

原创 java 列举文件夹下所有子文件夹和子文件的实现

java.io.File类中提供listFile()方法来列举出该文件夹下所有子文件和子文件夹实现代码:import java.io.File;public class FileList{ public static void main(String args[]){ File f= new File(args[0]); System.out.println(f.ge

2012-02-02 13:02:40 1259

原创 java GUI 布局

框架JFrame是最高级的容器,可以包含N个叫面板(JPanel)的子容器。容器有add跟remove方法来在容器中添加或者删除控件(如按钮JButton,文本框JTextField等)容器的布局管理使用setLayout方法来设置布局分3种布局方式:FlowLayout--从左至右依次摆放控件,一行摆满换行继续GridLayout--网格方式摆放BorderLayout--方位摆放(东,南,西,

2012-01-31 22:59:58 615

原创 C++操作mysql数据库类

头文件CMysql.h 1 #ifndef CMYSQL_H 2 #define CMYSQL_H 3 4 #include 5 #include 6 #include 7 #include 8 9 using namespace std; 10 11 class CMysql 12 { 13 public: 14

2012-01-14 17:01:17 926

原创 类继承方式笔记

类有4种访问权限:public 公有对象,类内部可以访问,类外部也可以访问protected 保护对象,类内部可以访问,类外部不可以访问,派生类可以访问private 私有对象,类内部可以访问,类外部不可以访问,派生类不可以访问不可以访问对象,类内部,类外部,派生类均不能访问基类访问属性         public方式继承         private方式继承

2012-01-07 11:37:39 208

原创 c/C++对mysql数据库进行操作笔记

对mysql数据库的操作一般分一下几步:第一:包含mysql头文件及定义变量#include MYSQL *mysql_conn;MYSQL_RES *res;MYSQL_ROW row;定义一个MYSQL结构体指针存放mysql操作的句柄定义个MYSQL_RES 结构体指针存放使用语句操作数据库返回结果定义一个MYSQL_ROW结构体第二:初始化mysql

2012-01-06 23:13:51 586

原创 C++中关于指向对象成员函数打指针例子

#include using namespace std;class TIME{ public: TIME(int h,int m,int s):hour(h),min(m),sec(s){}; //private: void display(); //private: int hour;

2011-12-30 15:49:42 659

原创 C++学习笔记二 C++标准库 数组及指针

C++的string跟vector库分别定义了大小可变的字符串和集合。string跟vector往往将迭代器用作配套类型来访问string中的字符或者vector中的元素。string字符串的size操作的返回值是字符串的长度,类型属于string的配套类型,即string::size_typestring类型可以通过下标操作来访问string对象中的单个字符vector类型size操作的返回值是vector集合里元素的个数,类型同理是vector的配套类型vector::size_type此处可为int

2011-01-18 17:20:00 1077

原创 C++学习笔记一 变量与基本类型

<br />1 :关于申明跟定义<br />在程序使用变量之前必须先申明或者定义变量!<br />因为C++程序很少可能可以在一个文件来完成,当需要多个文件实现时,而又不可避免的需要使用到共同的变量,这时就用到变量的申明。<br />变量的定义:确定变量的类型,给变量分配相对应的内存地址,同时还可以初始化。<br />变量的申明:告诉程序这个变量在其他文件中有定义。<br /> <br />如int i;   //定义<br />extern int i;  //申明,告诉程序i是一个int类型,在其他文件

2011-01-17 21:58:00 382

转载 游戏服务器架构探讨

<br />这里讨论的游戏服务器架构大概是目前国内乃至世界上的网游通用的一种架构了:<br />http://bbs.gameres.com/showthread.asp?threadid=93775<br />作者:qinglan<br />有段时间没有研究技术了,这次正好看到了新版的mangos,较之以前我看的版本有了比较大的完善,于是再次浏览了下他的代码,也借此机会整理下我在游戏服务器开发方面的一些心得,与大家探讨。 <br />另外由于为避免与公司引起一些不必要的纠纷,我所描述的全都

2010-12-28 20:49:00 382

原创 C++关于文件流才操作

ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类 (由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 所以头文件一般要包含上述对应的支持库打开文件(Open a file)我们使用它的成员函数open():void open (const char * filename, o

2009-02-24 20:19:00 586

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