C/C++经典规范源码分享
lurenceGu
c/c++ 游戏服务器开发
展开
-
实现MFC扩展DLL中导出类和对话框
如果要编写模块化的软件,就要对对动态链接库(DLL)有一定的了解,本人这段时间在修改以前的软件时,决定把重复用的类和对话框做到DLL中,下面就从一个简单的例子讲起,如何实现MFC扩展DLL中导出类和对话框。一、创建MFC扩展DLL步骤:运行Visual Studio 6.0->File->New...->Projects; 选择Mfc AppWizard(dll),在右边Project原创 2010-03-08 10:40:00 · 781 阅读 · 0 评论 -
部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr
#include #include #include //////////////////////////////////////////////////////Convert character to uppercase.const char *toupper(char *s){ for(char *t=s;*t!=/0;t++) { if(*t>=a&&*t *t-=a-原创 2010-03-04 15:48:00 · 1593 阅读 · 1 评论 -
买鸡问题(100块买100只鸡c++实现)
公:5块/只 母:3块/只 小:3只/块 for (int i = 0; i { z = (int)((100-i*5)/3); for(int j = 0; j { m = 100-(5*i+3*j); n = (int)(m/3); if ((0 == (3*n-m)) && (100 == (3*m+i+j))) { printf("公鸡%d只___原创 2009-12-18 09:39:00 · 2852 阅读 · 0 评论 -
拦截api
拦截api的技术有很多种,大体分为用户层和内核层的拦截.这里只说说用户层的拦截.而用户层也分为许多种:修改PE文件导入表,直接修改要拦截的api的内存(从开始到最后,使程序跳转到指定的地址执行).不过大部分原理都是修改程序流程,使之跳转到你要执行的地方,然后再返回到原地址.原来api的功能必须还能实现.否则拦截就失去作用了.修改文件导入表的方法的缺点是如果用户程序动态加载(使用LoadLibrar转载 2009-12-16 12:33:00 · 3899 阅读 · 0 评论 -
论软件接口中几种底层通讯的实现
一、 概述 软件接口是实现一个系统跟另外系统进行信息交互的桥梁,在不同的系统之间,根据系统的关联程度的不同存在紧耦合和松耦合两种:紧耦合要求接口响应反应快,消息不能阻塞;松耦合对响应反应要求比较低。本人主要讨论紧耦合接口通讯实现,在目前应用中,Socket、中间件、SOAP等都用相应的应用,但是应用中发现各通讯方式有自己固有的特征,"适合的才是最好的",这是真理。 在接口和系统信息交互的过程中转载 2009-12-10 12:47:00 · 651 阅读 · 0 评论 -
如何创建和使用socket链接池
采用CS方式的程序不可避免都要碰到socket连接的问题,很多时候,使用编程语言当中自带的socket库,使用起来多少有些不习惯,虽然系统自带的库在很多异常处理,稳定性上下了很多功夫,但是要去理解和使用那些库,比如做socket连接池不免要走很多弯路。在这里我和大家讨论下怎么样创建和使用socket链接池。 一般socket链接有以下两种方式:长(常)链接和短链接。 长链接:当数据转载 2009-12-10 12:45:00 · 793 阅读 · 0 评论 -
用完成端口开发大响应规模的Winsock应用程序
原文出处:http://msdn.microsoft.com/msdnmag/issues/1000/Winsock/通常要开发网络应用程序并不是一件轻松的事情,不过,实际上只要掌握几个关键的原则也就可以了——创建和连接一个套接字,尝试进行连接,然后收发数据。真正难的是要写出一个可以接纳少则一个,多则数千个连接的网络应用程序。本文将讨论如何通过Winsock2在Windows NT 和 Windo转载 2009-12-10 12:41:00 · 789 阅读 · 0 评论 -
基于select I/O模型的远程目录浏览与多线程文件下载
摘要: 服务器端基于select I/O模型。为防止程序界面阻塞, 有一个子线程用于不断接收socket并select其中的处理。客户端只有一个线程函数, 不过其利用率很高, 可用于远程目录交换, 请求文件大小, 创建若干线程来下载文件。文件传输有上传和下载,还有对等传输, 这个项目中, 传输文件具体指下载。 正文:一 数据及数据结构1 传送包, 客户端主线程给子线程传递的结构体type转载 2009-12-10 12:38:00 · 1033 阅读 · 0 评论 -
自己实现纯win32窗口事件(编辑框输入浮点数,静态框实现超链接,以前网上看见过相似代码自己改哈,以后有用)
/************************主窗口回调函数(放置编辑框的窗口)************************/LRESULT CALLBACK ProcMain(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam){ switch (Msg) { case WM_CLOSE: EndDialog(hDlg, 0原创 2009-12-10 11:33:00 · 2934 阅读 · 0 评论 -
标准DLL编程代码框架
/**********************XXX.h头文件**********************/#include #ifndef _DLL_TUTORIAL_H_#define _DLL_TUTORIAL_H_#if defined DLL_EXPORT#define DECLDIR __declspec(dllimport)#else#define DECLDIR __d原创 2009-12-10 10:48:00 · 789 阅读 · 0 评论 -
C/C++内存操作经典源码(仅供分享)
//计算数组维数#define CountArray(Array) (sizeof(Array)/sizeof(Array[0]))//计算字符长度#define CountString(String) ((UINT)((lstrlen(String)+1)*sizeof(TCHAR)))//安全删除指针#define SafeDelete(pData) { try { if(pData原创 2009-12-10 10:20:00 · 1996 阅读 · 0 评论 -
memcpy(void*,void*,unsigned int),memset(void*,char,unsigned int),strcpy(char*,char*)
原型:extern char *strcpy(char *dest,char *src); { ASSERT((dest!=NULL)&&(src!=NULL)); Char *address = dest; While((*dest++=*src++)!=’/0’) Continue; Return dest;原创 2010-02-02 16:21:00 · 1382 阅读 · 0 评论 -
ascii码表
Bin Dec Hex 缩写/字符 解释 0000 0000 0 00 NUL (null) 空字符 0000 0001 1原创 2010-01-26 18:03:00 · 727 阅读 · 0 评论 -
XML 解析c++源码(头文件)
/* * XMLTool.h 配置文件解析动态库头文件 * 主要输出函数接口分别实现对配置文件的读取和写入,针对结果集的复制清空,和两个字符串处理函数 * 读取配置文件接口 :int ReadXMLFile(XML_Node_Vector *XmlNodeVector, string filepath); * 写入配置文件接口 :int WriteXMLFile(XML_Node_Vecto原创 2010-01-26 14:37:00 · 2893 阅读 · 0 评论 -
XML 解析c++源码(源文件)
/* * XMLTool.cpp 配置文件解析动态库资源文件 * 主要输出函数接口分别实现对配置文件的读取和写入,针对结果集的复制清空,和两个字符串处理函数 * 读取配置文件接口 :int ReadXMLFile(XML_Node_Vector *XmlNodeVector, string filepath); * 写入配置文件接口 :int WriteXMLFile(XML_Node_Ve原创 2010-01-26 14:39:00 · 2923 阅读 · 4 评论 -
C++中的数据类型转换方法总结
C++中的数据类型转换方法总结摘要:本文总结了C/C++中的多种数据类型转换方法,并比较了各自的优劣。给出了推荐的使用建议。从int到char*,或者反过来从char*到int,在C/C++中到底有多少种转换方法呢?符合标准的大概有四种。即C数据转换函数族、sprintf/snprintf/sscanf函数族、字符串流std::stringstream、std::strsteam。不符合标转载 2010-01-24 12:51:00 · 951 阅读 · 0 评论 -
c判断汉字
#include int IsGB(PTSTR pText);int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { static TCHAR szText[] = {TEXT ("i服,了。uy")} ; PTSTR pText;原创 2009-12-28 10:56:00 · 835 阅读 · 0 评论 -
c文件操作
#include #include //use malloc, free #include //use memset #include //use isdigit #define ERROR_ILLEGAL_CHAR 1 //define error illegal character as 1 #define ERROR_NUMBERS_DIF 2 //define error numb原创 2009-12-28 10:57:00 · 571 阅读 · 0 评论 -
a*寻路
<br />#include <list><br />#include <math.h><br />#include <map><br />#include "iostream"<br />using namespace std;<br /> <br /><br />// 坐标点<br />typedef struct _point<br />{<br /> int timelist[1000];<br /> bool isWall;<br /> int x;<br /> int y;<br /> int原创 2010-07-14 02:08:00 · 624 阅读 · 0 评论 -
directx数学基础
向量(也叫矢量,英文叫vector) 向量就是包含大小(长度)和方向的一个量。向量有2维的,也有3维甚至4维的。在DX的所有结构体中,有一个结构体是用来表示3维向量的,它就是D3DVECTOR,这个结构体很简单,只有三个成员:x、y、z。一般来说,如果不涉及到向量运算的话,用这个结构体来定义一个向量就可以了。我们可以它来表示方向以及顶点在3D世界中的位置等。如果你要对那些向量进行一些运算的话转载 2010-03-26 11:30:00 · 847 阅读 · 0 评论 -
Torque Script入门教程
一. 基本语法不同1. 字符串的比较. C++中可以通过重载运算符实现比较,Torque Script则直接用$=和!$=进行比较,或者通过脚本内置函数strcmp进行比较. 2. 变量表示脚本中没有类型(实际上都是c++的字符串),即转载 2010-03-26 11:33:00 · 866 阅读 · 0 评论 -
torque 网络部分(二)
Network Ghosts and Scoping网络复制和范围The NetObject class is a derivative of SimObject that can replicate (ghost) itself across a network connection. All world object classes are subclassed from NetObject转载 2010-03-26 11:49:00 · 688 阅读 · 0 评论 -
torque 碰撞检测盒
bool SceneObject::collideBox(const Point3F &start, const Point3F &end, RayInfo *info){ const F32 * pStart = (const F32*)start; const F32 * pEnd = (const F32*)end; const F32 * pMin = (const F32*)原创 2010-03-25 18:52:00 · 652 阅读 · 0 评论 -
标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast(转载)
C 风格(C-style)强制转型如下: (T) expression // cast expression to be of type T 函数风格(Function-style)强制转型使用这样的语法: T(expression) // cast expression to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这原创 2010-03-25 16:53:00 · 461 阅读 · 0 评论 -
C++中模板类使用友元模板函数
问题始于学习数据结构,自己编写一个单链表,其中用到了重载输出运算符template class List{ friend std::ostream& operator & slist); //……};用vs2008可编译,但无法链接:无法解析的外部符号……后来上网查改为template class List{ friend std::ostream& operator原创 2010-03-25 16:49:00 · 806 阅读 · 0 评论 -
C++总结 ----- 友元类和友元函数
《windows环境多线程编程原理与应用》中解释: 如果将类的封装比喻成一堵墙的话,那么友元机制就像墙上了开了一个门,那些得 到允许的类或函数允许通过这个门访问一般的类或者函数无法访问的私有属性和方 法。友元机制使类的封装性得到消弱,所以使用时一定要慎重。 ■ 友元类的说明 将外界的某个类在本类别的定义中说明为友元,那么外界的类就成为本类的“朋 友转载 2010-03-25 16:43:00 · 634 阅读 · 0 评论 -
torque引擎内核 线程 pool
//-----------------------------------------------------------------------------// Torque Game Engine Advanced// Copyright (C) GarageGames.com, Inc.//---------------------------------------------------原创 2010-03-25 15:45:00 · 1098 阅读 · 0 评论 -
转贴:网络游戏封包基础 作者不明
要想在修改游戏中做到百战百胜,是需要相当丰富的计算机知识的。有很多计算机高手就是从玩游戏,修改游戏中,逐步 对计算机产生浓厚的兴趣,逐步成长起来的。不要在羡慕别人能够做到的,因为别人能够做的你也能够!我相信你们看了本教程后,会对游戏有一个全新的认识,呵呵,因为我是个好老师!(别拿鸡蛋砸我呀,救命啊!#¥%……*) 不过要想从修改游戏中学到知识,增加自己的计算机水平,可不能只是转载 2010-01-05 13:45:00 · 1803 阅读 · 0 评论 -
简单游戏服务器客服端搭建
客户机: Login()// 登入模块{ 初始化游戏数据; 获取用户输入的用户和密码; 与服务器创建网络连接; 发送至服务器进行用户验证; ... 等待服务器确认消息; ... 获得服务器反馈的登入消息; if( 成立 ) 进入游戏; else 提示用户登入错误并重新接受用户登入;}Game()// 游戏循环部分{ 绘制游戏场景、人物以及其它元素; 获取用户操作输入; 将用户的操作发转载 2010-01-05 13:48:00 · 11108 阅读 · 1 评论 -
STL函数
泛型算法: 1.find(开始索引,结束索引,查找值)。 2.copy(开始索引,结束索引,back_inserter(容器))。back_inserter成为iterator的适配器:它使得元素被插入到作为实参的vector的尾部。 3.sort(开始索引,结束索引)。 4.unique(开始索引,结束索引)。只是去掉相邻元素的重复值。操作后容器的长度不会变,返回一个iterator指向废弃部分原创 2010-03-12 11:38:00 · 738 阅读 · 0 评论 -
MD2文件的读取及三维动画显示
摘要 本文介绍了运用OpenGL,通过读取MD2文件开发复杂三维动画的方法,从而实现OpenGL与其它软件相结合创建复杂场景的能力,为快速开发复杂三维动画程序提供了捷径,并给出了一个实例。关键词 开放图形库; 文件格式;三维建模 1 前言OpenGL被严格定义为“一种到图形硬件的软件接口”。从本质上说,它是一个完全可移植并且速度很快的3D图形和建模库。转载 2010-03-12 11:03:00 · 4681 阅读 · 0 评论 -
在VC中调用DirectShow全屏播放视频
有些正在尝试自己编制游戏的朋友可能会碰到这样一个问题:游戏要播放片头动画,可是如何全屏播放动画呢?用媒体播放机控件?这是最简单的方法,可是好多功能都用不上,不免觉得有些浪费。而用vfw之类的多媒体库又太麻烦。怎么办呢? 其实微软不但提供了DirectX这样的便于游戏开发的SDK,还提供了基于其上的DirectX Media SDK。这套SDK可以帮助你简化多媒体开发,而又充分利用DirectX的原创 2010-03-11 16:25:00 · 740 阅读 · 0 评论 -
图片操作
CStatic m_bmp; CString m_strSourceFile; CRect rect1;IStream *pStm; CFileStatus fstatus; CFile file; LONG cb; CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,原创 2009-12-28 10:54:00 · 538 阅读 · 0 评论 -
win32 窗体
#include #include #include "stdlib.h" LRESULT CALLBACK WinSunProc( HWND hwnd, // 窗口句柄 UINT uMsg, // 消息id WPARAM wParam, // 附加信息 LPARAM lParam // 附加信息 );原创 2009-12-28 10:50:00 · 608 阅读 · 0 评论 -
STL demo
#include #include #include using namespace std; typedef struct employee { //Member Function public: employee(long eID, string e_Name, float e_Salary); //Attribute public: long ID; //Employee ID st原创 2009-12-28 10:59:00 · 680 阅读 · 0 评论 -
Winsock 完成端口模型简介
摘自《Networking Programming for Microsoft Windows》第八章“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!从本质上说,完成端口模型要求我们创建一个Win32完成端口对象,通过指定数量的线程,对重叠I/O请求进行管理,以便为已经完成的重叠I/O请求原创 2010-01-21 10:48:00 · 561 阅读 · 0 评论