写网络代码时,总希望把逻辑和网络层分开。而在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模型,包括了所有的...此外,程序采用分层的方式,利用配置文件动态加载服务器端的参数,完成服务器的基本配置。 程序运行的过程中会记录日志文件,方便查看服务器的运行状态。
总的来说,这篇论文提出了一个基于四叉树和Hilbert曲线的空间数据组织方法,结合IOCP和多线程技术,设计了一种高效的大规模虚拟地形数据调度算法。这种方法对于提升虚拟现实场景中大规模地形的渲染速度和用户体验...
内容涵盖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 ...