- 博客(23)
- 资源 (15)
- 收藏
- 关注
原创 游戏服务器架构探讨
http://blog.csdn.net/gddsky/archive/2007/10/18/1831688.aspx要描述一项技术或是一个行业,一般都会从其最古老的历史开始说起,我本也想按着这个套路走,无奈本人乃一八零后小辈,没有经历过那些苦涩的却令人羡慕的单机游戏开发,也没有响当当的拿的出手的优秀作品,所以也就只能就我所了解的一些技术做些简单的描述。一来算是敦促自己对知识做个梳理,二来与大
2012-09-26 09:28:51 2044 2
原创 用SRP6协议实现游戏登录流程
用SRP6协议实现游戏登录流程 大家都知道,在网络游戏开发中,客户端登录是服务器端程序设计最重要的一环,在这个环节,要考虑的最主要的是玩家账号的安全问题.在当下网络环境中,黑客,网络监听软件横行,因此我们必须要有一种安全机制来确保用户的帐号不被他人盗取.身份验证方法有很多种,在我们公司的游戏开发中,采用的是SRP6协议. SRP协议是由斯坦福大学计算机科学
2012-09-25 20:02:08 2710 2
原创 云风详解网易网络游戏服务器的构架
2007-12-06 09:03由中国最大的IT技术社区CSDN联合美国权威IT技术媒体CMP集团举办的国内权威顶级软件技术大会——“2007 软件开发2.0技术大会”(SD2C)已经完美闭幕。在本次大会上,网易技术研发经理、《大话西游》、《梦幻西游》、《网易泡泡游戏》主力开发者云风为听众讲解了网易网络游戏服务器的构架。一。引擎三大部分基于 freebsd 的服务器
2012-09-25 19:40:05 8094
原创 VC 6 调试调试子进程
在你想要调试的子程序的代码中加入一句代码DebugBreak(); 然后重新编译你的子程序的调试版本。现在调试主程序, 子程序的调试版本在运行的过程中,当执行到DebugBreak()时,将会抛出一个异常, 这个异常会由操作系统捕捉到,然后弹出一个对话框,说程序遇到了问题,问你要不要发送错误报告,点击该对话框的调试按钮,系统又会弹出一个对话框,选择
2012-09-25 11:36:28 1633
原创 C语言中如何在main函数开始前执行函数
在gcc中,可以使用attribute关键字,声明constructor和destructor,代码如下:[cpp] view plaincopyprint?#include __attribute((constructor)) void before_main() { printf("%s/n",__FUNCTION__); } __
2012-09-25 11:01:48 1618
原创 RUP 概述
RUP(RationalUnified Process,统一软件开发过程,统一软件过程)是一个面向对象且基于网络的程序开发方法论。根据Rational(Rational Rose和统一建模语言的开发者)的说法,好像一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持。RUP和类似的产品--例如面向对象的软件过程(OOSP),以及OPEN Process都是理
2012-09-25 09:22:48 2291
原创 一读一写情况下,无锁环形队列如何实现?
一读一写情况下,无锁环形队列如何实现?--------------------------------------------------------------------------------标题: 一读一写情况下,无锁环形队列如何实现?作者: 叶飞虎日期: 2009.03.09-----------------------------------------------
2012-09-24 10:24:28 3220 2
原创 一种扩展的环形队列在高性能网络游戏TCP网络库中的应用
络游戏数据包的特点一个是数据量大,一个是非常多的小数据包。一个高性能网络库中一个数据包从接收到应用层处理最好减少拷贝次数,尽管内存数据拷贝是非常快速的但数据收发量特大时就不能不考虑了。另外特别多的小数据包也是网络游戏的特点,比如在WINDOWS下大多采用IOCP,但如果针对每个数据包都去调用一次SEND,在极端情况下会导致IOCP中的队列满而导致发送不成功的情况,解决办法即是将多个小数据包拼成大包
2012-09-24 10:22:01 2313
原创 VC、VS2005调试技巧
一、 引言本文主要介绍以下几方面内容:常见编译错误VC调试器VC快捷键VC项目文件说明环境参数的设置二、常见编译错误 1. Fatal Error C1010 unexpected end of file while looking for precompiled
2012-09-24 09:20:42 2211
原创 Boost::asio io_service 实现分析
Boost::asio io_service 实现分析io_service的作用io_servie 实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是post和run,post向任务队列中投递任务,run是执行队列中的任务,直到全部执行完毕,并且run可以被N个线程调用。Io_service是完全线程安全的队列。Io_servie的接口
2012-09-21 09:56:46 1718
原创 Asio 核心概念和功能文档学习(三)
线程和Asio线程安全一般来说,并发使用不同对象是安全的,但并发使用同一对象是不安全的。然而,诸如is_service类型提供了安全并发使用同一个对象的强保证。线程池多线程可以调用io_service::run()设置调用完成处理程序的线程池。这个方法也可以被用于io_service::post()以用一种方式执行任何分配给一个线程池的计算任务。需要注意的是所有加入is_ser
2012-09-21 09:31:43 1393
原创 Asio 核心概念和功能文档学习(二)
前摄器(proactor)设计模式:没有线程的并发Asio库同时提供对同步和异步操作的支持。异步操作的支持基于前摄器设计模型。这种方法与同步或反应器方法对比的优缺点列在下面。 前摄器和Asio不考虑平台相关细节,我们来检查一下前摄器设计模式在Asio中是如何实现的。前摄器设计模式Asynchronous Operation(异步操作)定义一个异步执行的操作,例如so
2012-09-21 09:31:10 1863
原创 Asio 核心概念和功能文档学习(一)
基本Asio解剖Asio在I/O对象例如sockets上完成操作,即可是同步操作也可是异步操作。在开始使用Asio以前,了解Asio多个部分,你的程序,以及他们怎么一起工作的的概念图非常有用的。我们考虑当你在一个socket上执行一个连接操作时都发生了些什么作为一个引导的例子。我们可以通过考察同步操作开始。Your program(你的程序)会至少有一个io_service对象。i
2012-09-21 09:30:18 1378
原创 一个简单的python socket编程
python 编写server的步骤: 1. 第一步是创建socket对象。调用socket构造函数。如: socket = socket.socket( family, type ) family参数代表地址家族,可为AF_INET或AF_UNIX。AF_INET家族包括Internet地址,AF_UNIX家族用于同一台机器上的进
2012-09-14 10:02:27 6200
原创 [转载]在notepad++中使用NppExec编译代码
原文地址:在notepad++中使用NppExec编译代码作者:凌烟阁_天策 作为一个notepad++的使用者,你是否想过,在一步简单的操作中,就可以利用关联的编译器来编译代码?你或者已经利用nppExec扩展来编译文件,但是如果要自动执行又该如何?如果你想用tcc编译c文件,用g++编译cpp文件,用gawk自动解释awk文件,而不用调用编译器或者解释器,又将如何?这些都
2012-09-14 09:17:23 5399 2
原创 魔兽争霸III数据包规范
1. 本文涉及的数据包种类a) 魔兽争霸III拥有以下类型的数据包i. 局域网UDP数据包。这类数据包都用于在游戏准备阶段广播/检测游戏信息。ii. 游戏中TCP数据包。这类数据包在游戏准备阶段和实际游戏阶段都会被用到。我会分两部分来介绍这类数据包。iii. Battle.net TCP/UDP 数据包。有时间的话,我会用一份单独的d
2012-09-11 10:02:17 4493 1
原创 魔兽争霸游戏开始前数据包分析
转载自:http://blog.csdn.net/binbin0303/article/details/30747551.搜索局域网游戏:UDP,端口6112.0x0000 FF FF FF FF FF FF 00 11-5B 82 2D EC 08 00 45 00 ..[??.E.0x0010 00 2C A7 F4 00 00 80 11-D0 B2 C0
2012-09-11 09:00:12 3107 2
原创 c/c++字节对齐
在 相同的对齐方式下 ,结构体内部数据 定义的顺序不同 ,结构体整体占据内存空间也 不同 ,如下: 设结构体如下定义: struct A { int a; char b; short c; }; 结构体A中包含了4字节长度的int一个,1字节长度的char一个和2字节长度的short型数据一个。所以A用到的空间应该是7字
2012-09-07 11:30:52 1241 1
原创 C/C++ struct位结构(位域)
从问题开始#includevoid main(){union{struct{unsigned short s1:3;unsigned short s2:3;unsigned short s3:3;}x;char c;}v;v.c=100;printf("%d/n",v.x.s3);}A:4 B:0 C:3 D:6答案是
2012-09-07 10:24:21 1578
原创 c99之 柔性数组成员
在讲述柔性数组成员之前,首先要介绍一下不完整类型(incomplete type)。不完整类型是这样一种类型,它缺乏足够的信息例如长度去描述一个完整的对象。6.2.5 Typesincomplete types (types that describe objects but lack information needed to determine their sizes). C与
2012-09-07 10:13:14 998
原创 Windows共享内存 C++及C#实现
FileMapping用于将存在于磁盘的文件放进一个进程的虚拟地址空间,并在该进程的虚拟地址空间中产生一个区域用于“存放”该文件,这个空间就叫做File View,系统并同时产生一个File Mapping Object(存放于物理内存中)用于维持这种映射关系,这样当多个进程需要读写那个文件的数据时,它们的File View其实对应的都是同一个File Mapping Object,这样做
2012-09-07 08:47:06 5673
原创 (*)使用Boost.Asio编写通信程序
http://cpp.ezbty.org/content/science_doc/%E4%BD%BF%E7%94%A8boostasio%E7%BC%96%E5%86%99%E9%80%9A%E4%BF%A1%E7%A8%8B%E5%BA%8F使用Boost.Asio编写通信程序由 lgb 于 星期日, 2010/07/25 - 18:02 发表asioboost同步异步网
2012-09-06 16:22:41 1739
原创 一则简单的Windows共享内存IPC代码
Windows共享内存可以让两个进程对同一块内存进行读写。以下有2个进程,a.cpp生成A进程,b.cpp生成b进程。那么a进程将不停地读名为"Global\\MyFileMappingObject"的共享内存块,而b进程不停地写名为"Global\\MyFileMappingObject"的共享内存块。从而实现IPC。 //a.cpp#include #inclu
2012-09-06 14:03:29 916
彗星小助手
2011-11-15
HttpWatchPro
2011-11-10
计算机基础知识考试宝典
2011-09-22
Vc中BSTR,char和CString的转换
2007-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人