C/C++
文章平均质量分 51
悊子
服务器c++开发
展开
-
几个C函数:fgets, sscanf,fread,fwrite , strncpy,fopen, sprintf
(1)fgets:表头文件 include定义函数 char * fgets(char * s,int size,FILE * stream);函数说明 fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加转载 2009-06-19 16:17:00 · 2050 阅读 · 0 评论 -
C++笔记(1)explicit构造函数
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”转载 2013-12-09 11:37:34 · 520 阅读 · 0 评论 -
c++内存池(简单)
简要说明基本原理:对申请的小块内存进行内存管理,每个管理队列仅管理当前打小的内存块。如果当前大小内存块不足,就访问进程堆分块一块大内存,默认4K,然后初始化完毕后,供申请者使用。本人将小内存块划分为16字节,32字节,48字节,64字节,80字节,96字节,112字节,128字节,144字节,160字节,176字节,192字节,208字节,224字节,240字节,256字节,如果分配以上大小的内存块,将从对应的管理类CMemoryPool分配内存块。大于256的内存块直接原创 2013-12-07 11:37:23 · 2342 阅读 · 1 评论 -
1>Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example: 1>- add -D_WIN32_WINNT=0x
1>Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example:1>- add -D_WIN32_WINNT=0x0501 to the compiler command line; or1>- add _WIN32_WINNT=0x0501 to your project's Preprocessor Definitions.1>Assuming _WIN32_WINNT=0x0501 (i.e. Windows X原创 2014-01-25 12:15:00 · 5787 阅读 · 0 评论 -
ansi、Unicode、Utf-8之间的转化
wstring ANSIToUnicode( const string& str ){ int len = 0; len = str.length(); int unicodeLen = ::MultiByteToWideChar( CP_ACP, 0, str.c_str(), -1, NULL, 0 ); wchar_t * pUnicode; pUnico原创 2014-02-12 21:30:22 · 867 阅读 · 0 评论 -
查看lib的导出函数列表
查看lib的导出函数列表dumpbin /all XXX.lib > a.txt导出lib的函数到a.txtdumpbin /all XXX.lib原创 2014-03-28 22:19:59 · 4712 阅读 · 0 评论 -
vs2010 使用STLport-5.2.1
下载后解压,假设目录为:D:\STLport,接下来就该编译它了:1.在开始菜单中找到VC 命令行工具,接下来切换到D:\STLport\STLport-5.2.1目录。2.可以运行configure –help看看编译选项,用MSVC编译器编译的话,输入以下命令:configure msvc9(configure msvc10 会显示 Unknown compiler:转载 2014-04-01 22:10:06 · 1093 阅读 · 0 评论 -
_USE_32BIT_TIME_T 注意此宏
#define _USE_32BIT_TIME_T后,64位也会原创 2014-05-20 09:05:56 · 3580 阅读 · 0 评论 -
MTU值会导致服务器往客户端发送消息包发送不过去,不断重发。然后客户端一直不接受任何数据。
外网linux服务器测试游戏过程中,点击排行榜,返回排行榜数据,偶发出现没有返回数据,之后一直不再返回数据。后来使用抓包工具,发现,服务器返回客户端的数据过大,会拆成最大1414的消息包,当前MUT=1454。这个时候很容易出现网络消息重发。然后一直发送不到客户端。出现上面的问题,客户端可以发送消息包到服务器,服务器处理后回发消息包,全部正常。但是客户端就是没有收到消息包的情况。后修改MT原创 2015-09-21 10:55:54 · 1338 阅读 · 0 评论 -
IOCP编程注意事项
http://blog.csdn.net/only_/article/details/85535281、每个连接同时最好只有一个待决的WSARecv。IOCP不保证多个待决WSARecv情况下先投递的WSARecv就一定会先得到完成通知。因此,多个待决WSARecv可能导致数据乱序,无谓增加代码复杂性。 2、投递0长度缓冲区的WSARecv可以不转载 2013-05-14 10:46:13 · 762 阅读 · 0 评论 -
谷歌协议google protobuf 内存泄露
c++中使用google protobuf在关闭应用程序之前需要调用google::protobuf::ShutdownProtobufLibrary();要不然会有内存泄露。原创 2013-04-08 09:00:12 · 4405 阅读 · 1 评论 -
new 的运算符重载新用法
博客地址:http://www.52iocp.com本文地址:http://blog.csdn.net/hzdiy/article/details/8707924#include #include using namespace std;class A{public: A() { m_a = 1; m_b = 2; } A(int a, int b) {原创 2013-03-22 20:28:14 · 1224 阅读 · 0 评论 -
fgets()函数介绍,很方便实现逐行打印
fgets()--------------------------------------------char *fgets(char *s, int size, FILE *stream);s 是保存读取内容的缓冲区size 是缓冲区大小stream 是一个FILE指针fgets()函数 读取到它遇到的第一个换行符; 或者读取到比缓冲区的最大长度少一个字原创 2009-06-19 16:02:00 · 1404 阅读 · 0 评论 -
vs2008中配置lua开发环境 (编译lua动态库,调用程序无法使用)
11.1 在http://www.lua.org/ftp/中下载lua-5.1.4.tar.gz1.2 新建静态库,不要勾选“Pre-Compiled Header”和“MFC Support”选项.1.3 将所有src中的所有 .c (lua.c除外)和 .h 文件加入到工程中1.4 点击“属性-c/c++-高级-编译为”,选择“编译为C++代码(/TP)”(这样才能是CPP调用转载 2012-09-25 16:43:39 · 2787 阅读 · 0 评论 -
使用HSV比较RGB颜色相同 c++
HSV是指Hue(色相)、Saturation(饱和度)和Value(值或明度)。 HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向黑色顶点观察,就可以看到立方体的六边形外形。六边形边界表示色彩,水平轴表示纯度,明度沿垂直轴测量。 HSV六棱锥 H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度转载 2013-03-28 22:16:39 · 917 阅读 · 0 评论 -
3D服务器端以向量计算为主的角色位置的算法
3D服务器端玩家行走处理是服务器端根据客户端行走路径、玩家行走时间以及速度(包括变化速度)计算得出玩家的当前位置。由于客户端行走是一条路径,不使用2D中的格子计算算法,未能高效的获取角色的当前位置,运用玩家行走路径,行走速度,行走时间这些已量,进行计算玩家的当前精确位置。由于3D游戏中的点为xyz的空间点,所以牵连的计算为3维向量计算。空间两点距离计算公式为:原创 2013-03-18 09:03:42 · 2809 阅读 · 1 评论 -
游戏服务器之Timer计时器(定时器)动态链接库【超联网】
对于游戏服务器而言,计时器(每个多长时间触发一次)和定时器(定点触发)是不可或缺的一个组件。而计时器和定时器的做法又有很多种,我大致将其分成3中:1,非线程实现计时器和定时器;2,单线程实现计时器和定时器;3,多线程实现计时器和定时器;三种计时器的实现基本原理大致相同,运用时间戳GetTickCount()比较,Sleep等待,WaitForSingleObject等待。原创 2012-03-21 11:11:50 · 3903 阅读 · 2 评论 -
获取当前目录下的文件,目录 (封装)
本人正在开发一个简单的游戏服务器引擎,期间遇到载入文件夹下的所有lua文件,需要遍历目录和子目录获取所有的lua文件,运用到的是windows函数获取目录下的文件和目录,由于windows提供的函数为获取目录下的制定类型的文件,但不能获取子目录中的文件。本人进行一次函数封装,共提供3个基本函数:// 查找当前目录下的所有目录(不包括当前目录)void FindAllDir(const原创 2013-03-19 11:15:26 · 1724 阅读 · 0 评论 -
游戏服务器开发-- 角色数据进程间切换
这个周再游戏服务器中添加副本功能,但我们的服务器是多进程的服务器,玩家根据当前处于的地图不同,可能处于不同的地图服务器中,这个就面临一个问题是玩家再切换地图时可能要面临将玩家数据转移到其他的地图服务器中。之前对于跳转地图已经实现玩家数据的转移,实现思路如下:客户端请求跳转地图,将消息通过网关直接发送到对应的地图服务器,地图服务器判定玩家是否达到跳转地图的条件,可以跳转:判定跳转的目原创 2013-03-21 21:02:47 · 2557 阅读 · 0 评论 -
最快线程间数据交换算法,有效避免锁竞争 -- TwoQueues
请转帖本人文章时加入原文地址,谢谢。http://blog.csdn.net/hzdiy/article/details/8694642处理多线程数据共享问题注意的几个要点:1、锁竞争:尽量减少锁竞争的时间和次数。2、内存:尽量是使用已分配内存,减少内存分配和释放的次数。尽量是用连续内存,减少共享占用的内存量。多线程数据交换简单方案A:定义一个list,再所有操作l原创 2013-03-20 01:18:06 · 2464 阅读 · 2 评论 -
sizeof和_countof
sizeof() :返回所查询目标所占用字节数_countof() :返回所查询目标所含有元素个数int aryInt[10];size_t n = _countof(aryInt);结果n=10原创 2016-05-23 16:35:45 · 357 阅读 · 0 评论