浅谈完成端口网络通讯模型

来源 :中小企业管理与科技·上旬刊 | 被引量 : 0次 | 上传用户:zhuav
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:在计算机网络通讯方式中使用TCP 协议的C/S程序是其中非常重要的一种,在这种程序模型中服务器端程序开发又是其中的重点,本文简单地谈论在Windows系统下性能最高的一种网络通讯模型——完成端口通讯模型。
  关键词:完成端口网络通讯模型;TCP 协议;网络通讯方式
  在网络世界中,有两种网络通讯方式。第一种是我们最常见的Web形式,平时使用360、火狐、UC等浏览器都是使用这种模式来访问网络数据。第二种是C/S服务器客户端模式即在远程服务器上运行服务器程序,在终端机上包括传统的PC机和现在的移动终端Android和iOS设备上的APP运行客户端程序,服务器程序和客户机程序通过在IP地址和端口上使用TCP协议连接。在第二种方式中服务器程序往往是编程中比较复杂的部分。本文讨论在Windows下性能最高的通讯模型——完成端口模型。
  完成端口是Windows下使用异步非阻塞方式的系统内核对象,它的主要功能是提供一个服务器程序的内核部分,以便让几万个客户端程序接入,负责同时与这几万个客户端程序接收和发送数据(即网络I/O操作)。其程序设计包括下面三个实体部分,第一个是程序主线程,第二个是负责与客户端收发和接收数据的线程,这里我们称其为工作线程,第三个是操作系统本身。
  首先主线程开始三个工作,第一工作是负责初始化套接字库,由于要接入上万个客户端,要为每一个客户端提供套接字,而新建一个套接字需要花费比较多的时间,所以在初始化时,要先多建一些套接字,等有新客户端连接上来的时候直接用上而不是新建以便加快系统速度。工作线程具体的数量由网络状态来确定,比如并发数量很高的话就准备比较多的新建套接字,并发量如果不高的话就不准备太多。在新建完一定数量套接字后把它们组成队列。第二个工作是新建一个完成端口,把新建的套接字和完成端口绑定好以便监听。第三个工作是生成一定数量的工作线程负责网络I/O操作也就是负责发送数据到客户端和接收客户端发送来的数据,由于要避免线程之间的太多切换,我们生成CPU核心数两倍加二个工作线程。
  然后,工作线程开始工作,工作线程是以阻塞模式工作。一方面按需要给操作系统传递收发数据指令,操作系统在执行完收发数据后把运行结果发送到完成端口上。工作线程另一方面不停地扫描完成端口上由操作系统发来的执行结果,读出结果以便一下步的操作。在这里一般来说,工作线程有三种操作,第一是接收操作,即有新的客户端接入。第二是发送操作就是把数据发送到客户端,第三是接收由客户端发来的信息。所以在程序设计之初就要设计网络操作的类型。而具体是哪一种操作,则是由工作线程通过完成端口的读写状态函数来读取,以此循环。
  举一个例子来说明,我们把服务器程序想象成一家物流公司。这家公司有三种员工,首先是经理,然后是秘书,最后是快递员。经理就是我们上面提到的主线程,而秘书是工作线程,最后快递员是操作系统。代表主线程的经理只有一个,代表工作线程的秘书可以多个,同样一个秘书不可能做太多的事情,所以一个经理下面只管理几个秘书。而一个秘书可以同时给多个快递员下达收发货物的命令。在这时秘书不需要等待第一个快递员完成工作后再给第二个快递员下指令所以这里是异步非阻塞模式。快递员只是在完成工作后才把收发工作的执行结果返回到公司,而不是边做边汇报。
  工作流程如下,经理先开始工作,第一项工作是准备基础设备(即初始化socket 库,监听套接字),第二项工作是根据今天的业务量来生成空白工單(即多新建一些套接字以备客户端接入使用),确定秘书数量(生成工作线程数量),招集秘书开会确定工单的类型(即有什么网络操作如接收数据,发送数据和新客户端的接入等)。第三项工作是建立一个工作总台用于所有收发货品工作结果的存放(即建立一个完成端口)。
  然后是秘书开始工作,秘书的工作就是不停地从总台上读出快递员收发货品工作的执行结果,根据不同的结果做出不同的反应,总台上一般是新客户的来访,收货品,发货品的执行结果(对应的操作就是接收新客户端的接入,接收客户端的发送数据,发送数据到客户端)。
  最后是快递员去完成具体的接收和发送货品工作,然后把执行结果放到总台上去以便让秘书知道每一笔业务的执行情况(即操作系统异步非阻塞地完成接收和发送数据的工作后把执行结果放到完成端口上)。
  在这个循环完成后,如果服务器程序要结束运行,那应该由谁来完成结束完成端口呢?大家很自然地从经理,秘书和快递员中找出答案,是经理。也就是主线程来结束完成端口模型,由于完成端口模型上的工作线程是采用阻塞方式运行,所以主线程通过发送信息的方式来通知多个工作线程来结束当前的工作。在这里我们发送一个特定的网络事件给每一个工作线程,工作线程读出这个特定网络事件后就退出。这里注意一定要检查是否每个工作线程都退出。
  参考文献:
  [1]王艳平,张越著.Windows 网络与通信程序设计[M].人民邮电出版社.
  [2]徐磊,腾婧,张莹.Windows Sockets网络编程[M].机械工业出版社出版.
  [3]Jeffrey Richter(法) /Christophe Nasarre.Windows 核心编程 Windows via C/C++[M].清华大学出版社.
  [4]朱桂英,张元亮.visual c++网络编程案例实战[M].清华大学出版社.
其他文献
当前,数学的文化价值、文化教育功能已经引起数学界、数学教育界的极大关注和重视.研究数学文化在数学教育中的渗透不仅是数学教育发展的趋势,也是新一轮数学课程改革得以顺利实
【正】 月亮山位于我省榕江县的南部,毗邻的从江、三都、荔波三县,同属月亮山区域。地处黔桂两省交界边境,山峦起伏、交通闭塞。境内除汉族外,还聚居有苗、布依、侗、水、壮
我们以往批改数学作业都是用“√”“×”来评判学生答题的正误。这种生硬的做法可能会让学生在心理上产生麻木的感觉。也可能会影响师生之间的情感交流,使学生产生厌学情
随着国民经济的不断提高,我国在各个行业的企业规模、企业质量、企业数量、企业技术等方面都有了长足的进步,社会竞争十分激烈。与此同时,在保证经济效益和社会效益的不断提
摘 要:随着科技的不断发展,智能照明系统逐渐应用到各个行业和人们的日常生活中,其中电厂的发展过程中也需要充分的照明工作,本文将主要探讨智能照明系统在电厂中的应用。  关键词:智能照明;电厂;系统;应用;发展  在LED+智能系统日渐成熟的带领下,我国智能照明市场效益也呈现出了年年翻倍式增长模式,预计到2018年,我国“智能灯饰”市场有意突破2000亿。  1 智能照明系统分析  1.1 智能照明系
目的:了解农业院校贫困新生心理健康状况,为贫困生心理健康教育提高科学依据。方法 :采用UPI对某农业院校2015级268名新入学贫困生进行调查。结果:12015级贫困新生中一、二类学
摘要:山东省教育厅于2013年1月颁布《山东省中小学教师资格考试及认定制度改革工作实施办法》,山东省的幼儿教师资格考试将由省考向国考改革。为提高人才培养质量,学前教育专业
目的:探讨地龙提取物对抑制转化生长因子-β1(TGF-β1)信号通路诱导的肺泡上皮细胞间质转化和肺成纤维细胞活化的影响。方法:MTT法分析地龙提取物对两种细胞增殖的影响。TGF-
目前恒安集团已发展成为中国卫生用品行业最大的国内生产企业,分公司遍布14个省。恒安集团与安德里茨公司已建立了长达8年的合作伙伴关系,2006年2月又向其订购了一台新月型成形
Ukrpapirinvest(UPI)公司宣布,把位于乌克兰Kharkov地区纸厂生产卫生纸的计划推迟到第四季度。