linux下的一个网络服务器模型
来源:互联网 发布:怎样在淘宝网上注册 编辑:程序博客网 时间:2024/06/06 10:03
介绍一个linux下的网络服务器模型。
系统架构
将服务器程序分为两个服务器,即逻辑服务器和网络服务器(TcpServer)。逻辑服务器负责处理服务器需要处理的逻辑,而网络服务器仅处理网络的连接以及数据的收发。这两个服务程序是各自独立的,而不仅仅是属于不同进程。所以TcpServer的程序是可以直接应用于各个地方,而代码不需要改动。两个服务器之间,以共享内存或者管道等连接
LogicPipeTcpServerTcpServer Main类的数据结构
Main类的主结构为一个大的数组,数组中存储着名为TcpInfo的结构。TcpInfo中存储着某个Tcp连接的SOKET,IP,端口,创建时间等,和一个用于存储来往数据的大buff数组。当客户端与TcpServer建立连接后,TcpServer将数组的下标作为数据收发的主键。
管道数据结构
管道实际是一个大的队列(可采用环形队列),不过这个队列的元素长度是不定长的。我们的每个队列元素,由以下成员组成:CodeHead,NetHead,实际数据。CodeHead中,存储长度信息,这样我们就能知道要操作的数据的长度,NetHead是网络数据信息,主要是TcpInfo数组下标。CodeHead和NetHead是定长的。
CodeHead
NetHead
数据
CodeHead
NetHead
数据
TcpServer中共有两个管道,一个是逻辑服务器到客户端,一个是客户端到逻辑服务器。管道要存储队列头和队列尾两个信息。以S2C为例来说,逻辑服务器向客户端发信息时,将数据追加在队列尾部,而Tcp服务器则从队列头开始,不断将数据取出,并发送出去。选用共享内存的方法实现管道,还是比较合适的,效率上比较高。
0 0
- linux下的一个网络服务器模型
- linux下的网络模型
- linux网络服务器模型
- linux网络服务器模型
- linux网络服务器模型
- linux网络服务器模型
- linux网络服务器模型
- linux网络服务器模型
- linux网络编程:并发服务器的模型
- linux网络编程:并发服务器的模型
- linux网络编程:并发服务器的模型
- Linux网络编程之多进程模型编程与一个使用进程池实现的CGI服务器
- linux下网络服务器模型以及使用时应该注意的问题
- Linux下的网络编程模型总结
- Linux网络编程--服务器模型
- Linux服务器网络开发模型
- linux 网络编程----服务器模型
- Linux服务器网络开发模型
- 《算法与数据结构---C语言描述》里的农夫过河
- ftp访问树莓派(Raspberry)
- 《算法与数据结构---C语言描述》优先队列
- 排序二叉树的实现和我的一个数据结构设计
- 读《算法与数据结构---c语言描述》
- linux下的一个网络服务器模型
- 2D游戏中的碰撞检测
- 网络游戏剧情副本的一种实现方式(上)
- 网络游戏剧情副本的一种实现方式(中)
- cocos2d-x 将cocosbuilder输出文件映射成对象的原理
- C++类的内存分配
- spring 4.1.5 到 4.3.5中defaultContentType 报错的解决
- Lua与C++互相调用(上)
- 从京东退货体验吐槽客服流程