写网络代码时,总希望把逻辑和网络层分开。而在IOCP这样的高并发连接时,Get中返回所带的Key性价比让人垂涎不止。可以把逻辑和网络当成一个对象通过KEY返回,也可以通过一个网络ID,来查找逻辑对象。来讨论下前者:
IOCP_KEY={NetObject, LogicObject}; //暂时结合在一起
当Accept时,申明出一个IOCP_KEY进行维护。Get获得IOCP_KEY时,下一步就是传给上层的逻辑处理。而做法上又不想把整个IOCP_KEY给上层,这样的话结构之间耦合太紧。对上层来说,必须的是一个收到的协议包内容,一个逻辑对象(看需求也可以加入一个网络对象进行直发).所以添加了一个bridge文件,专门取出有用的信息,独立在两者之间。具体的框架图如下:
明显的,逻辑对象被搁在了网络层的最低端,虽然可以通过Bridge进行拆分,但是整体的架构上隐患很多。
那么,如果把NetObject和LogicObject分开,逻辑对象.h自然的回到World的级别上来(图不给了,想象)。看了一些代码发现很多都是通过一个共同的ID来查找。即IOCP获得NetObject(IOCP_KEY)中的ID后,同时查找到LogicObject的ID,然后返回。采用HASH的方法效率虽然可以接受,但是还有更好的o(1)复杂度算法。(提示,链表+数组)
分享到:
相关推荐
利用Visual C++ 6.0实现的一套Winsock I/O模型,包括了所有的...此外,程序采用分层的方式,利用配置文件动态加载服务器端的参数,完成服务器的基本配置。 程序运行的过程中会记录日志文件,方便查看服务器的运行状态。
四叉树作为一种有效的空间数据组织和索引方法,通过递归地将二维空间划分为四个象限,实现了对大规模数据集的有效分层管理和快速检索。四叉树的应用降低了数据查询的复杂度,提高了数据访问的局部性,为后续的数据...
内容涵盖TCP和UDP的客户/服务器编程、Internet和LAN上的远程PC控制、链路层的计算机扫描技术、路由跟踪技术、IP欺骗技术、密码截获及保护技术、网络封包截获技术、串口通信技术、IOCP技术,以及分层协议、NDIS中间层...
数据交换层基于IOCP(I/O Completion Port)技术,这是一种高效率处理大量并发数据交换的通信模型,适应于高负载的服务器环境,即使在学生集中签到签退的高峰时段,也能有效接收业务层的考勤数据。 系统实现的关键...
为了达到最佳系统性能,采用完成端口(I/OCompletionPorts,IOCP)管理套接字,IOCP能最大限度地提高网络通信的性能。 8. 平台功能模块的实现 平台主要功能模块包括GIS核心库、数据管理系统和通信传输系统。GIS核心...
因此,采用异步Sockets编程模型,如使用Windows的IOCP(I/O完成端口)或者套接字的select/poll/epoll机制,可以实现非阻塞的网络通信。这使得游戏服务器能同时处理多个客户端请求,提高并发性和响应速度,确保游戏...
网络模型通常指的是OSI七层模型或TCP/IP四层模型,它们为网络通信提供了分层结构。TCP/IP协议族是互联网的核心,主要包括TCP(传输控制协议)和IP(网际协议),以及其他如UDP(用户数据报协议)、ICMP(因特网控制...
WDM驱动是主要的模型,它包括功能驱动(Function Driver)、过滤驱动(Filter Driver)和总线驱动(Bus Driver)三部分,形成了分层驱动架构。 2. **驱动程序开发环境**:开发者需要使用特定的工具,如Driver ...