- 博客(155)
- 资源 (33)
- 收藏
- 关注
转载 Mission系统预览
从大局上看Mission是和整体的MVC框架协作的,那ServerListData来说,ServerList这一个逻辑可以单独出来,维护三个位置Data、Mission、View具体到list data的获取都直接由Mission完成,其他模块之需要使用就OK,Mission自己有策略决定何时去获取,或者定时更新
2015-06-30 21:36:58 832
转载 Module.h 网狐的“com”工具箱
Module.h 网狐的“com”工具箱:简单介绍下这个东东,其实我以前分析的时候就说过了,这个设计看上去很美,其实用起来不那么方便。这不6603就没有这玩意了。 网狐的COM接口比较简单,只有两个接口interface IUnknownEx void Release() void* QueryInterface(REFGUID guid, DWORD dw
2015-06-30 21:35:37 2032
转载 关于网狐棋牌6603源码的整理、编译和搭建
最近换工作,趁着有一段清闲时间,整理了一下网狐棋牌的源码,这份源码下载很久了,一直呆在硬盘。这次正好好好看看。 网狐的代码质量很高,流露出来的代码也比较完整,基本上都能编译通过。但是要真的搭建起来,还是需要额外花一些功夫的。 我下载的是6603版本,经过分析和研究,服务器这边主要是缺少KernelEngine的源码,客户端这边主要是缺少NetworkServ
2015-06-30 21:33:45 4597
转载 网狐的加密模块,映射加密算法分析
//发送映射const BYTE g_SendByteMap[256]={ 0x70,0x2F,0x40,0x5F,0x44,0x8E,0x6E,0x45,0x7E,0xAB,0x2C,0x1F,0xB4,0xAC,0x9D,0x91, 0x0D,0x36,0x9B,0x0B,0xD4,0xC4,0x39,0x74,0xBF,0x23,0x16,0x14,0x06,0x
2015-06-30 21:32:52 2918
转载 网狐棋牌(十) 成也萧何败也肖何? IUnknowEx
相关UML:看下某个查询接口的代码:////////////////////////////////////////////////////////////////////////////接口查询宏#define QUERYINTERFACE(Interface,Guid,dwQueryVer)
2015-06-30 21:31:29 1277
转载 网狐棋牌(八) 异步引擎 和 网狐棋牌(九) 服务引擎概览
相关UML:核心技术在于:在指定的线程中创建窗口,然后向窗口发送消息,在窗口消息处理中调用外部回调。 ------------------------------------------------------------------------------网狐棋牌(九) 服务引擎概览相关UML:服务引擎这是简单的聚合了其他的子模块,然后在S
2015-06-30 21:30:57 1565
转载 网狐棋牌(六) DataBaseEngine 和 网狐棋牌(七) CEventService
相关UML:使用数据库引擎必须持有数据库引擎内部队列,实现数据库回调接口(用来处理数据库操作请求),然后结果投递到调度引擎队列。理解网络狐棋牌,最重要是理解两个概念:1,队列服务2,接口的传递晚上分析IEventService,明天应该能把IServiceEngine搞定 -_+! ----------------------------------
2015-06-30 21:30:11 1055
转载 网狐棋牌(五) TCPSocketEnging分析
相关UML:网络引擎整体结构:SocketItem细节:先来看几个底层结构://重叠结构类class COverLapped{ //变量定义public: WSABUF m_WSABuffer; //数据指针 OV
2015-06-30 21:29:37 2019
转载 网狐棋牌(四) TimerEngine
相关UML:CTimerEngine成员变量: //状态变量 DWORD m_dwTimerSpace; //时间间隔,这个值后来应该是给了定时器线程protected: bool m_bSe
2015-06-30 21:28:41 1374
转载 网狐棋牌(三) 调度引擎初步分析
相关UML:CAttempterEngine实现了两个接口:IQueueServiceSink、IAttemperEngine;通过前面的分析,偶们了解到,IQueueServiceSink这个接口被是用来处理CQueueService中的数据的,根据上面的UML我们可以看到,CAttemperEngine关联了一个CQueueService(或者直接点说是:持有了一个CQue
2015-06-30 21:28:04 1627
转载 网狐棋牌(二) CQueueServiceEvent初步分析
相关UML:代码分析:首先CQueueServiceEvent这个名字很有诱惑,,,你感觉他是一个事件,其实不是。它实际的功能应该是一个带打包功能的事件队列,,,或者说是一个像指定的类似EventQueue的东东中投递事件。从接口上看,这个东东能投递TimerEvent DataBaseEvent SocketAcceptEvent SocketReadEvent So
2015-06-30 21:27:25 1289
转载 网狐棋牌(一) ServerKernel中的IQueueService接口分析
相关UML如下:添加:处理关键代码解析: 1//开始服务 2bool __cdecl CQueueService::StartService() 3{ 4 //效验参数 5 ASSERT(m_bService==false); 6 ASSERT(m_hCompletionPort==NULL);
2015-06-30 21:26:43 2017
转载 网狐棋牌游戏平台服务器架构设计分析
调用模型模仿COM组件接口模式,利用面向对象思想多态性polymorphism,调用方保存着被调用方的基础接口指针(interface or sink钩子)(Pure Virtual Function),调用方直接调用接口指针内声明的纯虚方法,而此纯虚函数的具体逻辑由该接口的派生类实现。示意图: 基于事件驱动的数据处理模型在系统功能设计中,针对网络事
2015-06-30 21:25:21 2488 1
转载 gh0st支持win7和win8
打开server的until.cpp文件.在最后面#endif的上面加上下列代码 DWORD _stdcall LaunchAppIntoDifferentSession( LPTSTR lpCommand ) { DWORD dwRet = 0; PROCESS_INFORMATION pi; STARTUPINFO si; DWO
2015-06-29 23:09:15 3300
转载 Event事件控制
事件对象就像一个开关:它只有两种状态---开和关。当一个事件处于”开”状态,我们称其为”有信号”否则称为”无信号”。可以在一个线程的执行函数中创建一个事件对象,然后观察它的状态,如果是”无信号”就让该线程睡眠,这样该线程占用的CPU时间就比较少。产生事件对象的函数如下: HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEve
2015-06-28 23:30:54 976
转载 AcceptEx()函数详细解析
服务器要做的最普通的事情之一就是接受来自客户端的连接请求。在套接字上使用重叠I/O接受连接的惟一API就是AcceptEx()函数【注一】。有趣的是,通常的同步接受函数accept()的返回值是一个新的套接字,而AcceptEx()函数则需要另外一个套接字作为它的参数之一。这是因为AcceptEx()是一个重叠操作,所以你需要事先创建一个套接字(但不要绑定或连接它),并把这个套接字通过参数传给Acc
2015-06-28 21:41:14 6105
转载 详解Windows内存分页机制
昨天新买了两本书, 看到了内存分页部分, 特此记录下, 没什么技术含量, 错误之处还请大牛指点.大多数现代的操作系统都支持虚存, 这使得系统上的每个程序都拥有自己的地址空间. 每当程序读取内存时, 都必须指定一个地址. 对于每个进程, 该地址必须转换为实际的物理内存地址. 例如, 若我们的MzfHips.exe 程序需要的数据在虚拟内存地址的0x0041FF10处, 则实际的物理地址可
2015-06-28 11:11:41 1434
转载 5种IO模式形象的比喻
老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。 这和Socket模型非常类似。下面我就以老陈接收信件为例讲解SocketI/O模型。 一:select模型 老陈非常想看到女儿的信。以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信,在这种情况下,“下楼检查信箱”然后回到楼上耽误了老陈太多的时间,以至于老陈无法做其他工作。
2015-06-28 11:09:31 634
转载 NAT类型及检测方法
一 NAT的类型NAT可以分为很多种,但是最为普遍的是传统NAT,或者称为向外NAT。向外NAT在默认情况下只允许向外的Session穿越NAT,这就是我们最为常见的情况。这种向外NAT又可以分为基本NAT(Basic NAT)和NAPT(Network Address/Port Translation)。1. 基本NAT基本NAT只转换IP地址,而不转换端口。一个基本NAT往往
2015-06-26 14:53:37 10370
转载 网络游戏外挂核心封包揭密
网络游戏的封包技术是大多数编程爱好者都比较关注的关注的问题之一,在这里就让我们一起研究一下这一个问题吧。 别看这是封包这一问题,但是涉及的技术范围很广范,实现的方式也很多(比如说APIHOOK,VXD,Winsock2都可以实现),在这里我们不可能每种技术和方法都涉及,所以我在这里以Winsock2技术作详细讲解,就算作抛砖引玉。 由于大多数读者对封包类编程不是很了解,我在这里
2015-06-26 14:47:21 2873
转载 SQL2005四个排名函数(row_number、rank、dense_rank和ntile)的比较
排名函数是SQL Server2005新加的功能。在SQL Server2005中有如下四个排名函数: 1.row_number 2.rank 3.dense_rank 4.ntile 下面分别介绍一下这四个排名函数的功能及用法。在介绍之前假设有一个t_table表,表结构与表中的数据如图1所示: 图1 其中field1字段的类型是int,fi
2015-06-25 13:50:27 534
原创 自定义字段做条件
方法一:with temTableas(select *,ROW_NUMBER() over(order by Score desc) as paiming from QPShuGameMatchDB..MatchScoreStatistics)select * from temTable where temTable.paiming=1方法二:select * from (se
2015-06-25 13:49:11 1285
转载 UDP用打洞技术穿透NAT的原理与实现
首先先介绍一些基本概念: NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。
2015-06-17 19:33:54 1508
转载 TCP打洞技术
建立穿越NAT设备的p2p的TCP连接只比UDP复杂一点点,TCP协议的“打洞”从协议层来看是与UDP 的“打洞”过程非常相似的。尽管如此,基于TCP协议的打洞至今为止还没有被很好的理解,这也 造成了对其提供支持的NAT设备不是很多。在NAT设备支持的前提下,基于TCP的“打洞”技术实际上 与基于UDP的“打洞”技术一样快捷、可靠。实际上,只要NAT设备支持的话,基于TCP的p2p技术 的健壮
2015-06-17 17:58:57 680
转载 WSAAccept()函数使用解析
首先了解accept、AcceptEx、WSAAccept的区别 .1. accept、WSAAccept是同步操作,AcceptEx是异步操作2. WSAAccept函数早accept函数基础上添加了条件函数判断是否接受客户端连接3. AcceptEx是异步的,可以同时发出多个AcceptEx请求,支持重叠IO操作. WSAAccept()函数:简述: 有条件地接受一
2015-06-17 10:14:00 6259
转载 全双工和半双工的区别
所谓的全双工通信时允许两个方向同时传递数据,他相当于两个单工通信,它要求发送设备和接收设备都有独立的接收和发送能力。通熟点来讲在通信时能保证在任意时刻双方都能听到对方的声音。半双工在一定时间内通信只有一个方向传递数据,半双工通信是指在在任意时间内通话,只能听到一方的通话声音,而另一方的声音被削掉,这种电话不需要回音抵消,普通免提电话和少部分会议电话属于此列。通熟点来讲半双工数据传输允许数据
2015-06-16 14:51:18 8465
转载 WinSock三种选择I/O模型
在《套接字socket及C/S通信的基本概念》和《WinSock编程基础》中,我们介绍了套接字的基本概念和WinSock API的基本调用规范。我们讨论了阻塞模式/非阻塞模式和同步I/O和异步I/O等话题。从概念的角度,阻塞模式因其简洁易用便于快速原型化,但在应付建立连接的多个套接字或在数据的收发量不均、时间不定时却极难管理。另一方面,我们需要对非阻塞模式套接字的 WinSock API调
2015-06-16 14:46:14 1484 1
转载 WinSock重叠I/O模型
一.重叠I/O模型的概念当调用ReadFile()和WriteFile()时,如果最后一个参数lpOverlapped设置为NULL,那么线程就阻塞在这里,直到读写完指定的数据后,它们才返回。这样在读写大文件的时候,很多时间都浪费在等待ReadFile()和WriteFile()的返回上面。如果ReadFile()和WriteFile()是往管道里读写数据,那么有可能阻塞得更久,导致程序性能下
2015-06-16 14:43:59 570
转载 深度探索I/O完成端口
引言要想编写一个高性能的服务器应用程序,必须实现一个高效的线程模型。让太少或者太多的服务器线程来处理客户的请求,都可能导致性能问题。例如,如果一个服务器创建单个线程来处理所有的请求,那么客户端可能长期等待而得不到响应,因为服务器同一时刻只能忙于处理一个请求。当然单个线程也能并发处理多个请求,当I/O操作被启动时,它可以从一个请求切换到另一个请求,但是这种结构相当复杂,并且不能充分利用多处理器的
2015-06-16 14:43:03 585
转载 WinSock完成端口I/O模型
关于重叠I/O,参考《WinSock重叠I/O模型》;关于完成端口的概念及内部机制,参考译文《深度探索I/O完成端口》。完成端口对象取代了WSAAsyncSelect中的消息驱动和WSAEventSelect中的事件对象,当然完成端口模型的内部机制要比WSAAsyncSelect和WSAEventSelect模型复杂得多。IOCP内部机制如下图所示: 在WinSock中编写完成
2015-06-16 14:42:11 1336
转载 五种I/O模型的性能分析
重叠I/O模型的另外几个优点在于,微软针对重叠I/O模型提供了一些特有的扩展函数。当使用重叠I/O模型时,可以选择使用不同的完成通知方式。采用事件对象通知的重叠I/O模型是不可伸缩的,因为针对发出WSAWaitForMultipleEvents调用的每个线程,该I/O模型一次最多都只能支持6 4个套接字。假如想让这个模型同时管理不止64个套接字,必须创建额外的工作者线程,以便等待更多的事件对象
2015-06-16 14:40:31 1627
转载 WinSock服务器设计的四个关键问题
6.2.1 接受连接的方法Winsock扩展函数AcceptEx是唯一能够使用重叠I/O接受客户连接的函数。下面主要深入探讨使用该函数接收连接的问题。前面已经讨论过,当客户连接进来时,服务器需要创建一个套接字来负责维护与一个客户端的会话。使用AcceptEx函数之前必须创建一些套接字,并且这些套接字必须是未绑定、未连接的,即使它们可能在调用TransmitFile, TransmitPac
2015-06-16 14:39:42 579
转载 socket通信的环形缓冲
前段时间实现了一个小型的C/S架构的多人在线即时通信工具,JIGQQ。其中对使用TCP通信有点心得。 记得在我大学时代,就用VB做过TCP的通信。当然那时候是很初级的,发送的数据量也很小的应用。当时就觉得,有时候发送的数据接收端不能接收到,有时候呢觉得一次性没有接受完毕。前段时间实现了一个小型的C/S架构的多人在线即时通信工具,JIGQQ。其中对使用TCP通信有点心得。记得在我大学时代,就
2015-06-16 14:19:44 1114
转载 VC网络通信API概览
1.WinSock APIWindows Sockets是在Windows环境下使用的一套网络编程规范,常常简称为Winsock。WinSock主要是基于socket来开发基于TCP/IP模型中各层的服务器端与客户端程序。可使用RAW SOCKET API(原始套接字)开发低层协议的程序,当然这需要了解协议的报文格式。1.1 Windows Sockets API参考《Wi
2015-06-16 14:12:34 719
转载 TCP通信流程解析
B/S通信简述整个计算机网络的实现体现为协议的实现,TCP/IP协议是Internet的核心协议,HTTP协议是比TCP更高层次的应用层协议。HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。浏览器(Web Browse
2015-06-16 14:07:32 585
转载 VLAN原理详解
目录--------------------------------------------------------------------------------1.为什么需要VLAN2.实现VLAN的机制3.VLAN的访问链接(Access Link)4.VLAN的汇聚链接(Trunk Link)5.VLAN的汇聚方式——IEEE802.1Q与I
2015-06-16 14:00:02 639
转载 P2P的原理和常见的实现方式
为了项目的后期IM应用,最近在研究libjingle,中间看了也收集了很多资料,感慨网上很多资料要么太过于纠结协议(如STUN、ICE等)实现细节,要么中间有很多纰漏。最后去伪存真,归纳总结了一下,希望对以后的同行有些许帮助。如果有什么需要讨论或者指正的,欢迎留言或者邮件peakflys@gmail.com 一.P2P实现的原理首先先介绍一些基本概念:
2015-06-16 13:58:09 668
转载 Win32多线程编程(6) — 多线程协作及线程的池化管理
多线程级别的并行计算写多线程应用程序最困难的地方在于如何使各线程的工作协调进行。Windows提供的用于线程间通信的各种机制是很容易掌握的,可是要把它们应用到工作中完成既定的功能时就会遇到这样、那样的困难。对于常见的“生产者-消费者”模型,只要采取合理同步措施实现数据交换的统一性即可。这类模型中的多线程往往任务独立,主要两类线程,一类写线程(生产者),一类读线程(消费者)。但在实际应用中,
2015-06-16 13:52:21 769
SSDTHook实现进程保护
2017-06-09
SkinSharp开发库+百款皮肤+皮肤编辑器
2017-05-24
minhook-1.3.2
2017-05-09
python2.7.8 32
2016-05-25
AStar 算法实例
2015-07-18
Visual Assist X补丁
2015-06-18
cmake-3.14.3-win64-x64.zip
2019-09-05
跨平台高性能TCP服务器框架 &boost;
2018-06-25
网狐IOCP压缩版
2018-06-22
用C++实现的壳
2017-09-14
像加载DLL一样加载EXE
2017-09-10
protobuf-2.61最新版
2017-08-28
Gh0stVC6到VS2010迁移所有问题的解决方法
2017-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人