- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux下实现电信渠道终端系统.doc
Linux下实现电信渠道终端系统 摘 要 Linux作为当今发展最快的操作系统,凭借着其稳定,功能强大,可定制性高的优点,正迅速成为各大企业的宠儿。本文介绍如何在Linux环境下设计一款a电信渠道终端系统,模拟实现联通营业厅的多种服务,并着重介绍了该系统服务器的实现技术。 【关键词】Linux 共享内存 线程池 接口设计 在数字网络信息一体化的今天,网络通信技术有了飞速的发展。最引人关注的便是电信运营商所主导的网络通信服务,正潜移默化地影响着每个人的生活。了解通信技术也显得尤为重要。 本文将针对两个进程间通信模式之一的客户-服务方式来介绍如何设计电信渠道终端系统实现进程间的通信。将系统分为客户端和服务器两部分,并分别阐述其设计思路以及两者的接口设计,着重介绍服务器的实现技术。 1 客户端设计思路 客户端是利用图形界面软件QT设计而成,其结构示意图如图1所示。 主要包括以下几个模块: 发送模块:将发送数据包缓冲内的数据通过SOCKET发送出去,并确认服务器已经收到;如果规定时间内没有回复,则进行重发。如果发现SOCKET错误,则通知UI交互层处理。 接收模块:从网络上接收数据包,并存放进接收数据包缓冲,进行包体解析。如果发现SOCKET错误,则通知UI交互层处理。 UI交互层:完成用户业务操作,获取用户输入,并将接收到信息显示到UI给客户看由UI进程负责整个客户端的框架初始化和复位。 2 服务器设计思路 服务器是用C语言编写,分为前置接入服务器和后置业务应用服务器。 2.1 逻辑结构 其结构示意图如图2所示。 从客户端接收数据模块:通过SOCKET接收从客户端发来的数据包 包体解析校验模块:检验包体的完整性以及包体数据的完整性,若完整则将需要的相关数据存入共享内存1中,否则通知客户端重新发送数据包。 线程池:从共享内存1中接收到数据,根据数据中的任务编号将对应任务添加至线程池等待执行。 任务处理模块:包含充值缴费、余额查询、账单查询、详单查询、买电子卡等业务流程,当线程池执行相应任务时,从数据库中查询所需要的数据内容再存储到共享内存2中。 发送数据模块:从共享内存2中获取到响应的数据,封装成包体,通过SOCKET发送回至客户端。 2.2 主要技术应用 2.2.1 基于TCP的SOCKET编程 编程步骤如下: 第一,调用socket函数来创建通讯所需的流式套接字。 第二,调用bind 函数将所创建的套接字绑定到一个指定的本地地址及端口上。 第三,调用listen函数来设置套接字为监听的模式。 第四,调用accpet 函数,阻塞等待客户端请求,一旦有客户端请求到来,它会创建一个对应于此连接新套接字,随后就用这个套接字与指定的客户端进行通信。 第五,调用recv和send 函数与客户端进行数据通信。 第六,通信完成后调用close 函数来关闭套接字,然后回到第四步。 第七,在服务器端程序关闭前调用close 函数关闭监听套接字。 2.2.2 进程间通信-共享内存 所谓共享内存,就是由IPC为一个进程所创建的一个特殊的地址范围,它将出现在进程的地址空间中。共享内存是允许两个或多个不相关的进程去访问的同一部分逻辑内存。如果一个进程向这段共享内存写了数据,所做的改动会立刻被有权访问同一段共享内存的其他进程看到。 电信渠道终端系统服务器中创建了两块共享内存,一块负责存放前置服务到业务应用服务的数据,另一块则是负责存放业务应用服务查询完数据库后回复前置服务的数据内容。之所以才有共享内存通信,其中一个好处就是其效率高,因为进程之间在共享内存时,并不总是读写少量数据后就解除映射,有新的通信时再重新建立共享内存区域;而是保持共享区域,直到通信完毕为止,这样,数据内容一直保存在共享内存中,并没有写回文件。共享内存中的内容往往是解除映射时才写回文件的。 2.2.3 线程池 线程池是预先创建线程的一种技术。线程池在任务还没有到来之前,创建一定数量(N)的线程,放入空闲队列中。这些线程都是处于阻塞状态,不消耗CPU,但占用较小的内存空间。 当新任务到来时,缓冲池选择一个空闲线程,把任务传入此线程中运行;如果缓冲池已经没有空闲线程,则新建若干个线程。当系统比较空闲时,大部分线程都一直处于暂停状态,线程池自动销毁一部分线程,回收系统资源。 由于电信渠道终端系统面向的是万级以上的用户连接,会有大量的电信业务需要处理,这样会造成系统创建大量线程而导致消耗完系统内存以及”过度切换”,所以使用线程池能有效地减少在创建和销毁线程上所花的时间以及系统资源
文档评论(0)