(计算机应用技术专业论文)基于一对多税控处理模型的研究.pdf_第1页
(计算机应用技术专业论文)基于一对多税控处理模型的研究.pdf_第2页
(计算机应用技术专业论文)基于一对多税控处理模型的研究.pdf_第3页
(计算机应用技术专业论文)基于一对多税控处理模型的研究.pdf_第4页
(计算机应用技术专业论文)基于一对多税控处理模型的研究.pdf_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 在税控样机研制成功后的下一个目标之一就是研发一对多的网络税控器,本 文正是基于此背景,重点研究利用多线程等技术实现一对多的数据处理模型。本 课题在对g b l 8 2 4 0 7 税控管理系统和对多总体设计的模型架构进行概要叙述 后,着重就一对多税控处理的总体算法进行研究,在对税控器端所采用的服务模 型经过反复论证的基础上,最终确定税控器端采用有线局域网环境下的t c p 连接 与多线程服务器形式作为模型实现的框架。由于税控器设计涉及的技术较多,因 此在设计模型框架时对相关理论如网络s o c k e t ,多线程原理,嵌入式数据库理 论等进行了适当的陈述。由于一对多中的多在实际情况下没有限定,因此在本文 的后面部分对模型框架进行了优化研究,包括一对多的线程性能优化,对多的 数据库分布式处理优化等。由于本文的着眼点是模型研究,因此重点是在技术层 面上的软件算法及优化等的研究。通过基本程序测试,实现一对多的数据处理的 瓶颈至少有两个,一个是嵌入式数据库的并发性,再一个是税控器的处理能力。 本文提出的方案是利用队列缓存数据、再利用嵌入式数据库的事务进行一次性的 批处理,这样能显著提高嵌入式数据库的并发性能。解决税控器处理能力的办法 之一是利用分布式的思想,利用o r b i t 等c o r b a 工具将嵌入式数据库的数据处理 转移到其它机器,这样就能在很大程度上减少税控器的负担;对于一对多中的 “多”超出了网络税控器的处理能力而引起内存不足或处理缓慢等问题,本文采 用了异步通讯模式加以解决。本文的研究,可对研究可实际应用的一对多网络税 控器提供较好的技术原型参考及借鉴。 关键词网络税控器;s o c k e t 理论;多线程 a b s t r a c t a b s tr a c t a f t e rd e v e l o p p i n gs u c c e s so ft h et a x c o n t r o lm o d e lm a c h i n e ,o n eo f t h en e x tt a r g e t si sd e v e l o p p i n go n et om a n y n e t w o r kt a xc o n t r o lm a c h i n e t h i sp a p e ri sb a s e do nt h i sb a c k g r o u n de x a c t l y ,f o c u s e so nt h eu s e m u i t i - t h r e a d e dt e c h n o l o g yt or e a l i z eo n et om a n yd a t a p r o c e s s i n g m o d e l a f t e rs u m m a r i z eg b l 8 2 4 0 7t a xc o n t r o lm a n a g e m e n ts y s t e ma n do n e t om a n ym o d e ld e s i g ns t r u c t u r e ,t h e nm a k ee m p h a s i so nr e s e a r c h i n go n et o m a n yt a xc o n t r o lp r o c e s s i n ga l g o r i t h m a f t e rd e m o n s t r a t er e p e a t e d l y o f t h es e r v i c em o d e lw h i c ht a xc o n t r o ls i d ea d o p t e d ,f i n a l i z ed e t e r m i n i n g u s i n gt h et c pc o n n e c t i o na n dm u l t i t h r e a d e ds e r v e ra sm o d e lf r a m e w o r k d u et ot a xc o n t r o lm a c h i n ei n v o l v em o r et e c h n i q u e ,t h e r e f o r e ,h e r ea l s o c o n d u c t i n ga na p p r o p r i a t es t a t e m e n t m a k i n gs u c ha st h en e t w o r ks o c k e t ,t h e p r i n c i p l eo fm u l t i - t h r e a d e d ,e m b e d d e dd a t a b a s et h e o r ye t c t h a n k st ot h e r e i sn ol i m i to nm a n yo ft h eo n et om a n yc a s e si np r a c t i c e ,t h e r e f o r e ,i n t h el a t t e rp a r to ft h isa r t i c l e ,c a r r y i n go nar e s e a r c ho no p t i m i z a t i o n o ft h em o d e lf r a m e w o r k ,i n c l u d in go n et om a n yt h r e a dp e r f o r m a n c e o p t i m i z a t i o n ,o n et om a n yd a t a b a s ed i s t r i b u t e dp r o c e s s i n go p t i m i z a t i o n e t c d u et ot h ef o c u siso no n et om a n ym o d e lr e s e a r c h ,t h e r e f o r e ,t h e s o f ta l g o r i t h ma n dt h eo p t i m i z a t i o no ni ti so nt h ep o i n t t h r o u g hb a s i c p r o g r a mt e s t ,t h e r ea r e a tl e a s tt w ob o t t l e n e c ko nr e a li z a t i o no n et om a n y d a t ap r o c e s s i n gm o d e l ,o n ei st h ec o n c u r r e n c yo fe m b e d d e dd a t a b a s e ,o n e i st h ep r o c e s s i n ga b i l i t yo ft a x c o n t r o lm a c h i n e t h i sp a p e rp u tf o r w a r d am e t h o dw h i c hu s eq u e u et ob u f f e rd a t a ,a n dt h e nu s e i n ga f f a i r sp r o c e s si n g o fs q li t et ob a t c hp r o c e s s ,w h i c hc a np r o m o t et h ec o n c u r r e n c yo f e m b e d d e dd a t a b a s en o t a b l e l y o n ew a yt os o l v ep r o c e s s i n ga b i l i t yi s t o m a k eu s ed i s t r i b u t et e c h n o l o g y ,t h r o u g hu s i n gc o r b at o o l ss u c ha s o r b i t ,m o v i n gt h ed a t ap r o c e s s i n go fe m b e d d e dd a t a b a s et oo t h e rm a c h i n e , t h u s t h et a x c o n t r o lm a c h i n ew i l l d e c r e a s eb u r d e no b v i o u s l y w h e nt h e m a n yo fo n et om a n yi sm u c he x c e e dt h ep r o c e s s i n ga b i l i t yo ft h e t a x c o n t r o lm a c h i n e ,t h ist e x ta d o p tam e t h o do fa s y n c h r o n o u s c o m m u n i c z t i o nt os o l v ei t t h i sr e s e a r c h ,w i l lp r o v i d eag o o dt e c h n i q u e p r o t o t y p ea n du s e f o rr e f e r e n c ef o rr e s e a r c h i n gt h er e a l i z a b l eo n et om a n y t a x c o n t r o lm a c h i n ec e r t a in l y n e t w o r kt a xc o n t r o lm a c h i n e ;t h e o r i e so fs o c k e t :m u l t i t h r e a d i 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他 人已经发表或撰写过的研究成果,也不包含为获得北京工业大学或其它教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示了谢意。 签名:起垒垒日期:2 竺里2 :笸:圣 关于论文使用授权的说明 本人完全了解北京工业大学有关保留、使用学位论文的规定,即:学校有权 保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部 分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵守此规定) 第1 章绪论 曼曼曼曼皇量曼曼曼曼曼曼曼曼皇曼曼曼皇曼曼曼曼量曼曼曼曼曼皇曼曼曼曼曼曼曼曼曼曼曼量曼曼鼍曼量曼量曼曼曼曼曼曼皇曼曼曼鼍曼皇曼鼍n m m ,in 曼曼皇曼量 1 1 课题背景 第1 章绪论 到大中型商业流通企业消费是我国几亿百姓几乎天天要面对的经济活动,因 此,对大中型商业流通企业加强税收征管,堵塞税收漏洞,不仅是对相关法律的 尊重,也是社会进步、国家强盛的必然要求。 国家税务管理机关一直致力于依法治税,按律收税,但由于对大中型商业流 通企业缺少第一手的税控数据,因此,对这些企业的税收管理相对是有些滞后的。 主要原因有两个方面:一方面是税控数据的形成不能及时汇总,再一个就是对其 实时监控有一定难度。 g b l 8 2 4 0 7 正是在此背景下开始起草的,它的中心思想就是通过以票控税, 对企业业务数据、财务数据实行实时技术监管,使商场的每一笔销售,每一个单 品销售都能即时统计汇集到税控服务器中,使相关税务人员能透明了解这些企业 的实际销售情况,解决税控数据的及时获取问题。 g b l 8 2 4 0 7 草案制定后的下一个目标就是税控样机系统的研发,在北京工业 大学等四家单位的联合努力下,税控样机已初步研发成功,目前正在相关省市进 行试点工作。 1 26 8 18 2 4 0 7 税控管理系统概述 税控样机系统中的硬件核心是税控器。税控器( f i s c a lp r o c e s s o r ) 是在计算 机或其它电子设备配合下实现税控功能的电子装置。可以保证经营数据正确生 成、可靠存贮和安全传输,满足税务机关的管理和数据核查要求。税控器是一种 具有法律严肃性和不可破坏性的带有计税功能的装置,不仅是商业企业经营管理 的得力助手,也是税务人员常驻店内采集销售数据的执法代表。税控器产生的税 控数据被分别存储在税控卡和税控存储器中,是向税务机关纳税的凭据。税控器 适用于已应用计算机管理的商业企业、酒店、宾馆等餐饮、娱乐、服务企业,是 对已经应用计算机网络化管理的餐饮、娱乐、服务等商业企业的改造阳引。 税控样机系统的软件分别运行在p o s 机( 宿主) 、税控服务器及税控器上, 完成联机、税控器初始化、开票( 废票、退票) 、报税、完税、稽查等功能。 1 2 1 税控系统中的常用概念 联机:在宿主与税控器通讯之前,确定税控器提供的串行接口处于打开状态, 并设置好一定的通讯速率,确定双方是否可以进行通讯。宿主发送联机请求命令, 如果联机成功,可以进行其它的通讯命令,在执行后续命令时不再进行联机操作。 税控器初始化:税控器出厂后投入使用必须对其进行初始化,才能够进行税 北京t 业大学t 学硕十学位论文 务营业。初始化需要将税控卡和用户卡插入税控器中,宿主向税控器发送初始化 命令完成。 开票( 包括退票和废票) 操作:用户卡中购买了发票之后,在开票之前要进 行分发发票,然后就可以进行开票操作,税控卡负责对开票数据进行合法性检查, 并根据税种税目索引号对开票金额进行分类累计,更新日交易记录,最后生成发 票税控码。税控器保存发票明细,更新日累计,宿主打印发票。 报税、完税:将前一阶段税控器所存税控数据写到税控卡和汇总到用户卡内, 以供客户( 持用户卡) 到税务局报税使用。税控管理系统( 税务部门) 向用户卡 发送监控管理数据( 下一次报税截止日期、发票限额、累计金额限额、税种税目、 明细标志) ,通过用户卡更新税控器及其税控卡中的监控管理数据。完成完税操 作。 稽查:当税务机关要想检查税控器内的交易情况时,可以通过税务管理系统 发行管理卡来核查税控器的发票明细,日交易数据,申报数据是否和申报带给税 务管理系统的数据一致等侧。 1 2 2g b l8 2 4 0 7 税控管理样机系统包括的主要模块及功能 税控数据采集模块: 税控数据采集模块是一个软件模块,其主要功能是主动获取商用收款机销售 交易数据,然后与网络税控器进行数据交互,并依税务机关的格式要求进行税控 电子票打印;当商用收款机与网络税控器的连接中断时,停止打印税控电子发票。 网络税控器模块: 这是税控系统需添加的硬件设备,直接与p o s 机相连,负责税控数据收、发 和税控处理等工作,其主要功能是: ( 1 ) 与商用收款机、税控服务器通讯; ( 2 ) 接收、解析税源数据并生成税控码; ( 3 ) 返回税控相关数据给税控数据采集模块; ( 4 ) 上传税控相关数据到税控服务器; 这里需要说明的是,之所以在税控系统添加网络税控器,其目的,一是将p o s 机的部分任务进行分担,这是因为p o s 机在税控系统改造后要运行相关数据采集 软件,如果商场中的p o s 机的配置较低而驻留程序较大,会严重影响p o s 机的性能。 添加网络税控器的第二个目的就是在断网情况下能保证税控系统依然能正常运 行一段时间,并能对有关税控数据进行备份。 2 第l 章绪论 税控服务器模块:该模块属管理控制模块 主要功能是: ( 1 ) 检测商用收款机和网络税控器的联机情况,记录其工作状态信息; ( 2 ) 对税控相关数据进行收集、保存、分析和统计等; 税控发票终端模块: 税控发票终端是专门用于开具定长正式发票,并能支持完成退票、废票等处 理功能的设各。 12 3g b l 8 2 4 0 7 的税控处理流程 税控样机系统的处理流程可概括为: ( 1 ) 在p o s 机的操作系统核心中增加采集模块,负责采集商场销售数据: ( 2 ) 采集模块通过串口将采集数据传给网络税控器; ( 3 ) 网络税控器对采集数据进行解析,然后将这些数据进行税控处理; ( 4 ) 网络税控器将处理的数据发送给p o s 机进行打印; ( 5 ) 网络税控器将处理的数据茇送给税控服务器的数据库中进行存储: 1 2 4g b l 8 2 4 0 7 标准样机应用架构 样机架构可用图卜l 描述。 图卜1 样机系统的税控模型 f i g u r e l - i t a x - c o n t r o l m o d c l o f p z o t o t y p es y s t e m 1 3 本文主要研究内容 图卜1 的架构,在税控样机系统联合研发组的努力下已顺利实现,符合国家 税务总局的“以票控税”的要求。 但是,图卜1 的架构也存在问题尚待完善,以一台lo s 机带一个网络税控器, 北京t 业大学t 学硕十学位论文 这对拥有几十甚至上百台p o s 机的大型超市来说,网络税控器的数量无疑是一笔 很大的开销。因此,研究一对多的p o s 机一网络税控器处理技术,会在相当程度 上减少税控系统的采购成本,降低商家的采购压力,利于税控系统的普及和推广。 本文正是基于此项需求,着手进行多p o s 机对一网络税控器的研究,包括一 对多模型选型及实现、实现算法包括网络多线程的数据收、发、队列操作,线程 的互斥、锁;嵌入式数据库的事务处理等。同时,对在实际应用中可能出现的问 题,如数据库的并发、税控器的处理能力,线程过多会影响性能等,进行了较为 深入的研究,力争使模型实现能更适应实际要求及有利于以后的继续研究。 税控样机系统中税控器与p o s 机的连接采用的是串口通讯方式,速率较慢。 在一对多实现中p o s 机与税控器的连接如仍用串口,不仅使硬件设计趋于复杂 化,而且在工程施工等方面都会带来许多问题。因此,本文的一对多研究模型, 是以有线网络为前提的。 1 4 论文组织结构 论文首先给出了本文的项目背景- g b l 8 2 4 0 7 及税控样机系统的主要架构、 功能,在此基础上引出了多数据源处理研究的目的。在其后的章节,按照一对多 模型的总体设计,一对多模型的详细设计,一对多模型的性能优化,一对多税控 处理模型的有关测试,论文结论等进行展开。在一对多模型的总体设计中,给出 了本文所要研究的模型基本架构和有线一对多税控处理的基本算法;在一对多模 型的详细设计中首先对网络原理做了介绍,然后陈述了网络s o c k e t 的具体配置 方法,在此基础上给出了客户端设计算法;对于税控器端的详细设计,涉及的内 容较多,一个是税控器按照服务器设计模式需采取的工作模型,本文确定为多线 程模型,此后,本文详细叙述了多线程的有关概念,函数原型、属性配置方法等 内容,然后给出了税控器端用多线程实现一对多的详细设计算法。一对多模型的 详细设计是本文的基本解决办法,但还不足以解决实际中出现的一些问题,如“一 对多中的多”超出了税控器的处理能力等,因此,在本文的第4 章,给出了针对 上述一些问题的实际解决办法,包括s o c k e t 方面的s e l e c t 优化,数据库的分布 式优化等;第5 章是对前面详细设计与优化程序的实践测试,其后就是全文的结 论总结。 4 第2 章一对多模型总体设计 21 引言 21 1 一对多含义及常见形式 所谓一对多,就是在税控中用一台网络税控器同时处理多个终端。根据终端 与税控器连接的形式不同,可分为无线和有线两种一对多形式。 2 1 1l 无线一对多嵌入式税务控制器架构 该种控制器与终端采用无线连接,结构简单,不足之处:无线网络的速度较 慢,运行效率较低:再一个是无线接入的稳定性目前尚不是很成熟,难以保证商 场业务的持续稳定进行“捌。 21 1 2 有线一对多嵌入式税务控制器架构 有线一对多嵌入式税务控制器通过网络介质或串口等与终端进行连接: ( 1 ) 利用有线局域网络:网络介质可以提高从终端到嵌入式税务控制器的数 据传输速度和准确性。 ( 2 ) 利用串口:有线一对多也可用串口来实现,但相对网络来说,其布线、 传输速率等都不如网络更理想,因此,在本文的一对多模型中,是以网络有线的 一对多为基础进行论述的“。 212 本文所要研究的模型架构 一对多的p o s 机网络税控器模式可用图2 - 1 概括。 图2 - 1 是用一台税控器带多台p o s 机,该网络税控器所具备的业务功能与单 台环境下相同,不同之处主要就是该网络税控嚣采用多线程响应多台p o s 机。 圈2 - 1 本文要研究的一对多模型架构 f i g u r e 2 - 1 t h e 。n e i o m a n y m o d e l $ l r t l e t u r e o f t h i s p a p e r 22 有线一对多税控处理模型的实现算法 在本文的研究中,由于重点是研究一对多的实现方法,因此,我们只对税 控流程做了相似模拟。我们将p o s 机的采集模块用p c 机的网络发送结构体数据 ( 一条一条地发送) 来代替,而税控器的功能也只包括:网络税控器运行多个线 程,分别完成将数据八队列;从队列取数据;税控处理后写入数据库和放入数据 输出队列;从输出队列取数据,发给p o s 机和税控服务器等功能。 多数据源数据处理模型可用图2 2 表示 二赢卜_ 二+ 热。 “。繁:燃燃挈“4 图2 - 2 一对多解决方案 f i g o r e 2 - 2 t h e o l l e t o m a n ys o l u t i o n s ( 1 ) p c 机向税控器发送已解析数据( 如“品名,编码,单价,数量,金额”) ( 2 ) 税控器线程1 :接收p c 机上的数据,将数据放入接收队列( 队列 ) ( 3 ) 税控器线程2 :从队列a 取出数据,将结果写入本地数据库,将税控结 果( 编码等) 放入发出数据的队列( 队列b ) ( 4 ) 税控器线程3 :将数据从发出数据的队列( 队列b ) 取出,发给p c ( 模拟 p o s 机) 和p c ( 模拟税控服务器) 23 本章小结 在本章,通过介绍一对多的常见形式,引出了本文要研究的税控处理模型: 利用有线局域网络构成多数据源的数据传送方式。改原税控样机的p o s 端的数据 采集与串口发送数据为网络直接发送顾客的数据( 一笔一笔的发送) ,去除了原 税控样机的税控器的解析功能。这样有利于一对多算法从实现角度更加清晰。 第3 章一对多模型详细设计 第3 章一对多模型详细设计 3 1 有线一对多税控处理模型的网络数据传送 3 1 1 网络原理 网络程序和普通的程序不同,它分为客户端和服务器端。服务器程序先启 动,在一个端口上监听,直到有一个客户端的程序发来了请求。客户端欲与服务 器端进行通讯,需先通过s o c k e t 建立有关连接h 引。 s o c k e t 通常也称作”套接字”,用于描述i p 地址和端口,是一个通信链的 句柄。应用程序通常通过套接字”向网络发出请求或者应答网络请求m 3 。 s o c k e t 在计算机中提供了一个通信端口,可以通过这个端口与任何一个具 有s o c k e t 接口的计算机通信。s o c k e t 有两种基本的通信模式。他们是面向无 连接的通信与面向连接的通信m 1 t c p 是一种面向连接的传输层协议。通过使用序列号和确认信息,t c p 协议 能够向发送方提供到达接收方的数据包的传送信息口嘲。当传送过程中出现数据 包丢失情况时,t c p 协议可以重新发送丢失的数据包直到数据成功到达接收方 或者出现网络超时。t c p 协议还可以识别重复信息,丢弃不需要的多余信息, 使网络环境得到优化h 1 。如果发送方传送数据的速度大大快于接收方接收数据 的速度,t c p 协议可以采用数据流控制机制减慢数据的传送速度,协调发送和 接收方的数据响应。t c p 提供无差错、发送先后顺序一致的、包长度不限和非 重复的网络信包传输啼。7 1 。 u d p 是一种无连接的协议,每个分组都携带完整的目的地址,各分组在系 统中独立传送。无连接服务不能保证分组的先后顺序,不进行分组出错的恢复 与重传,不保证传输的可靠性。 网络通信的基本过程是: 服务器端 ( 1 ) 创建服务器套接字( s o c k e t ) 。 ( 2 ) 服务器套接字进行信息绑定( b i n d ) ,并开始监听连接( 1 i s t e n ) 。 ( 3 ) 接受来自用户端的连接请求( a c c e p t ) 。 ( 4 ) 开始数据传输( s e n d r e c e i v e ) 。 ( 5 ) 关闭套接字( c l o s e s o c k e t ) 。 客户端 ( 1 ) 创建用户套接字( s o c k e t ) 。 ( 2 ) 与远程服务器进行连接( c o n n e c t ) ,如被接受则创建接收进程。 ( 3 ) 开始数据传输( s e n d r e c e i v e ) 。 ( 4 ) 关闭套接字( c l o s e s o c k e t ) h 钔。 7 北京t 业大学t 学硕十学位论文 图3 - i 图示了利用s o c k e t 进行通信的具体过程。 c li e n t s e r v e r 图3 - 1p o s 机和税控器的通讯 f i g u r e 3 - 1c o m m u n i c a t i o no f p o sa n dt a x - c o n t r o l lm a c h i n e 在本文,由于收款数据的重要性,因此在模型中采用t c p 的面相连接的通信 方式。 3 1 2s o c k e t 配置使用方法 配置s o c k e t 的基本步骤是: ( 1 ) 建立s o c k e t ,函数原型为: i n ts o c k e t ( i n td o m a i n ,i n tt y p e ,i n tp r o t o c 0 1 ) ; 其中:d o m a i n 指明所使用的协议族,通常为p f _ i n e t ,表示互联网协议族 ( t c p i p 协议族) :t y p e 参数指定s o c k e t 的类型:s o c k _ s t r e a m 或s o c k d g r a m ; p r o t o c o l 通常赋值”0 。s o c k e t0 调用返回一个整型s o c k e t 描述符,以在后面 的通信中使用h 引。 ( 2 ) 绑定s o c k e t ,函数原型为: in tb i n d ( i n ts o c k f d ,s t r u c ts o c k a d d r i n * m y a d d r ,i n ta d d r l e n ) 其中:s o c k f d 是由s o c k e t 调用返回的文件描述符。a d d r l e n 是s o c k a d d r 结 构的长度。m y _ a d d r 是一个指向s o c k a d d r 的指针。在 中有 8 第3 鼋一对多模型详细设计 s o c k a d d r i n 的定义: s t r u c ts o c k a d d r in u n s i g n e ds h o r ts i n f a m il y : u n s i g n e ds h o r ti n ts i np o r t ,i s t r u c ti n _ a d d rs i na d d r ; u n s i g n e dc h a rs i n z e r o 8 : s i n f a m i l y 一般为a fi n e t ,表示使用i n t e r n e t 协议,s i n a d d r 设置为 i n a d d r - a 州表示可以和任何的主机通信,s i n _ p o r t 是我们要监听的端口 号s i n _ z e r o 8 是用来填充的,以保证地址结构的兼容性h 3 1 。 b i n d 将本地的端口同s o c k e t 返回的文件描述符捆绑在起成功是返回0 , 失败的情况和s o c k e t 一样,返回一1 h 驯。 ( 3 ) 侦听s o c k e t ,函数原型为: i n tli s t e n ( i n ts o c k f d ,i n tb a c k l o g ) 其中:s o c k f d 是b i n d 后的文件描述符。b a c k l o g 是设置请求排队的最大长 度。li s t e n 函数将b i n d 的文件描述符变为监听套接字返回的情况和b i n d 一样 4 3 】 o ( 4 ) 接受连接a c c e p t ,函数原型为: i n ta c c e p t ( i n ts o c k f d ,s t r u c ts o c k a d d r * a d d r ,i n t * a d d r l e n ) 其中:s o c k f d 是1i s t e n 后的文件描述符。a d d r ,a d d r l e n 是用来给客户端的 程序填写的,服务器端只要传递指针就可以了“副。 b i n d ,l i s t e n 和a c c e p t 是服务器端用的函数,a c c e p t 调用时,服务器端的程 序会一直阻塞到有一个客户程序发出了连接。a c c e p t 成功时返回最后的服务器 端的文件描述符,失败时返回一1 m 1 。 ( 5 ) 客户端请求连接c o n n e c t ,函数原型为: i n tc o n n e c t ( i n ts o c k f d ,s t r u c ts o c k a d d r 木s e r v _ a d d r ,i n ta d d r l e n ) 其中:s o c k f d 是s o c k e t 返回的文件描述符。s e r v _ a d d r 储存了服务器端的 连接信息,s i n _ a d d 是服务端的地址,a d d r l e n 是s e r v a d d r 的长度h 引。 c o n n e c t 函数是客户端用来同服务端连接的。成功时返回o ,失败时返回 一1 【4 3 1 。 ( 6 ) 数据发送s e n d ,函数原型为: i n ts e n d ( i n ts o c k f d ,c o n s tv o i d * m s g ,i n tl e n ,i n tf l a g s ) 其中:s o c k f d 是用来传输数据的s o c k e t 描述符;m s g 是一个指向要发送数 据的指针;l e n 是以字节为单位的数据的长度;f l a g s 一般情况下置为o 咖1 。 s e n d 0 函数返回实际上发送出的字节数。在应用程序中应将s e n d 0 的返回 9 北京工业大学工学硕 :学位论文 值与欲发送的字节数进行比较。嘞1 例如用下面的程序进行对比 c h a r * m s g = ”h e l l o ! ”: i n tl e n ,b y t e s s e n t : l e n = s t r l e n ( m s g ) : b y t e s s e n t = s e n d ( s o c k f d ,m s g ,l e n ,0 ) : ( 7 ) 数据接收r e c v ,函数原型为: i n tr e c v ( i n ts o c k f d ,v o i d * b u f ,i n tl e n ,u n s i g n e di n tf l a g s ) 其中:s o c k f d 是接受数据的s o c k e t 描述符;b u f 是存放接收数据的缓冲区; l e n 是缓冲的长度。f l a g s 一般情况下置为0 。r e c v0 返回实际上接收的字节数, 或当出现错误时,返回一1 并置相应的e r r n o 值嘞1 。 3 2 客户端详细设计 3 2 1 客户端算法流程图 客户端( p o s 机) 一条一条的向税控器端( 服务器端) 发送数据,服务器( 税 控器) 收到后向客户端发s e r v e r _ o k ( p l e a s e ) 信息,客户端则发送下一条: 如未收到,延时3 0 秒,如果仍未收到s e r v e r _ o k 信息,客户端输出网络故障信 息,并重新启动连接服务器 l o 第3 章一对多模型详细设计 算法流程如图3 2 : p o s 机端 ( 开始 ) 上 打开。一个s o c k e t 上 i 初始g s o c k a 0 连接到s e r v e r 上 从服务器接收信息( m s g ) 卜 p 0 p 一 从服务器接收信息( 计时) 萝 n = 慕 图3 2 客尸端算法流程图 f i g u r e 3 - 2 t h ec l i e n ta l g o r i t h mf l o wc h a r t 3 3 税控器端详细设计 在一对多模型中,税控器相当于服务器,因此,可以参照服务器方式设计 税控器 3 3 1 服务器模型 传统的服务器模型有循环( 迭代) 服务器和并发服务器。循环( 迭代) 服 务器同一时刻只能处理一个客户端,而并发服务器对每一个客户机的请求由该 服务器创建一个子进程( 线程) 来处理n 4 。1 7 3 。因此,可并发处理多个客户。 北京t 业大学t 学硕 j 学位论文 3 3 1 1 循环( 透代) 服务器 循环服务器处理过程( 以t c p 服务器为例) 见图3 3 : t c p 循环服务器 臣四 臣司 叵 囱 壶 鲴 图3 - 3 循环( 迭代) 服务器模型 f i g u r e 3 - 3 c y c l e s ( i t e r a t i o n ) s e r v e rm o d e l 对于t c f 循环服务器,由于一次只能处理一个客户端的请求只有在这个客 户的所有请求都满足后,服务器才可以继续后面的请求这样如果有一个客户端 占住服务器不放时,其它的客户机都不能工作因此,循环服务器模型一般不适 合用于t c p 服务器模型“8 1 。 而对于u d p ,它是非面向连接的,没有一个客户端可以老是占住服务端只要 处理过程不是死循环,u d p 循环服务器对于每一个客户机的请求总是能够满足 侣】 o 3 3 1 2 并发服务器 并发服务器有多进程服务器,i o 多路复用服务器和多线程服务器等。 ( 1 ) 多进程服务器 在1i n u x 系统中,当一个进程需要另一个实体执行某件事时,该进程就使用 f o r k 派生一个新的子进程,让子进程去进行处理。l i n u x 下的大部分网络服务 程序都是如此实现的:父进程负责接收连接请求、建立连接,然后派生子进程, 由子进程处理与客户的交互n 引。 1 2 第3 章一对多模型详细设计 其原理如图3 - 4 : t c p 并发服务器服务器子进程( 线程) 图3 - 4 并发服务器模型 f i g u r e3 - 4c o n c u n v n ts e r v e tm o d e l ( 2 ) i o 多路复用服务器 对于一个服务器,当一个进程同时有多个客户连接,即存在多个t c p 套接 字描述符( s o c k e t ) 时,可以使用s e l e c t0 函数对这些s o c k e t 进行监视。 由于s o c k e t 默认是阻塞的,即接收数据时如果没有数据就会等待,因此会 造成因某个s o c k e t 阻塞而不能处理其它s o c k e t 。利用s e l e c t ( ) 函数,就可以 对一组s o c k e t 进行轮询,从而避免了进程为等待一个已连接上的数据而无法处 理其他连接,因而这是一种时分复用的方法,传统的u n i x 服务器就是采用这种 模型n 螂1 。 ( 3 ) 多线程服务器 这是本文采用的模式。虽然多进程并发服务器开发的方式多年来一直在沿 用,但使用f o r k 生成子进程存在一些问题。一是f o r k 占用大量的资源,二是 f o r k 子进程后,需要用进程间通信( i p c ) 在父子进程间传递信息,进程间传 递数据不是很方便乜卜2 副。 基于此,采用多线程技术,有助于解决以上两个问题。 3 3 2ljf l u x 线程 3 3 2 1 线程的定义 线程是在共享内存空间中并发的多道执行路径,它们共享一个进程的资源, 如文件描述和信号处理。在两个普通进程( 非线程) 间进行切换时,内核准备从一 个进程的上下文切换到另一个进程的上下文要花费很大的开销汹】。 这里上下文切换的主要任务是保存老进程c p u 状态,并加载新进程的保存状 北京t 业大学t 学硕i :学位论文 态,用新进程的内存映像替换老进程的内存映像。线程允许进程在几个正在运行 的任务之间进行切换,而不必执行前面提到的完整的上下文嘟1 。 3 3 2 2 进程和线程的关系 根据操作系统的定义,进程是系统资源管理的最小单位,线程是程序执行 的最小单位。线程和进程十分相似,不同的只是线程比进程小汹1 。 首先,线程采用了多个线程可共享资源的设计思想。例如,它们的操作大 部分都是在同一地址空间进行的。其次,从一个线程切换到另一线程所花费的 代价比进程低。再次,进程本身的信息在内存中占用的空间比线程大呻副。 因此,线程更能允分地利用内存。线程可以看作是在进程内部执行的指定 序列。线程和进程的最大区别在于线程完全共享相同的地址空间,运行在同一 地址上吲。 相对进程而言,线程是一个更加接近于执行体的概念,它可以与进程中的其 它线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础 上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间 【硒1 0 也可以将线程和轻量级进程( l w p ) 视为等同,但其实在不同的系统实现 中有不同的解释。l w p 更恰当的解释可能为一个虚拟c p u 或内核的线程,它可 以帮助用户态线程实现一些特殊的功能呻10 3 3 2 3 线程的优点 线程由内核按时间分片进行管理。在单处理器系统中,内核使用时间分片 来模拟线程的并发执行,这种方式和进程相同。而在多处理器系统中,如同多 个进程,线程是真正的并发执行晦。 由于线程共享相同的内存空间。不同的线程可以存取内存中的同一个变量, 因此,程序中的所有线程都可以读或写声明过的全局变量啼。 使用多线程的理由之一是和进程相比,它是一种非常”节俭”的多任务操作 方式心2 一铂。在l i n u x 系统下,启动一个新的进程必须分配给它独立的地址空间, 建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种”昂贵”的多 任务工作方式一幻。而运行于一个进程中的多个线程,它们彼此之间使用相同 的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个 进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换 所需要的时间哪! 。 使用多线程的理由之二是线程间方便的通信机制5 2 1 。对不同进程来说, 它们具有独立的数据空间,要进行数据的传递只能通过通信的方式进行,这种 方式不仅费时,而且很不方便。线程则不然,由于同一进程下的线程之间共享 数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且 1 4 第3 章一对多模型详细设汁 方便呻一幻。当然,数据的共享也带来其他一些问题,有的变量不能同时被两个 线程所修改,还有就是线程安全的问题m 司l6 2 1 。 使用多线程的理由之三是使多c p u 系统更加有效。操作系统会保证当线程 数不大于c p u 数目时,不同的线程运行于不同的c p u 上h 8 5 2 1 。 3 3 2 4 管理线程 l i n u x 下最常用的是遵循p o s i x 标准的p t h r e a d 线程库啪,剐。 l i n u x 线程在核内是以轻量级进程的形式存在的,拥有独立的进程表项,它 位于用户层和系统层之间。系统对线程资源的分配、对线程的控制是通过轻进程 来实现的,一个轻进程可以控制一个或多个用户线程。而所有的创建、同步、删 除等操作都在核外p t h r e a d 库中进行。p t h r e a d 库使用一个管理线程 ( _ _ p t h r e a d _ m a n a g e r0 ,每个进程独立且唯一) 来管理线程的创建和终止,为 线程分配线程i d ,发送线程相关的信号( 比如c a n c e l ) ,而主线程 ( p t h r e a d _ c r e a t e 0 ) 的调用者则通过管道将请求信息传给管理线程阳引。 3 3 3 多线程设计 3 3 3 1 线程的创建与结束 ( 1 ) 线程创建p t h r e a d c r e a t e ,函数原型为啼射: e x t e r nin t p t h r e a d c r e a t e p ( ( p t h r e a d t * _ t h r e a d , c o n s t p t h r e a d _ a t t r t * a t t r ,v o i d * ( * s t a r t _ _ r o u t i n e ) ( v o i d 木) ,v o i d 木a r g ) ) ; 其中:线程的标识符类型,p t h r e a d t 在头文件 u s r i n c l u d e b i t s p t h r e a d t y p e s h 中定义: t y p e d e fu n s i g n e dl o n gi n tp t h r e a d t ; 第一个参数为指向线程标识符的指针,第二个参数用来设置线程属

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论