下载  >  操作系统  >  Linux  > Linux下基于TCP的预先派生子进程服务器的Socket编程

Linux下基于TCP的预先派生子进程服务器的Socket编程 评分

Linux下基于TCP的预先派生子进程服务器的Socket编程
和家强,等Iinx下基于TCP的预先派生子进程服务器的 Socket编程 个客户。这使得服务器能够同时为多个客户服务,每个进程 比较耗费CPU时间。多进程并发服务器的流程如图3所示 个客户。并发服务器的问题在于为每个客户fork一个子进程 TCP并发服务器的main()函数调用子进程的程序如下 P服务器 socket() TCP客户 i=0 bindo a0m)1连接建立阻塞到客户连接到达 Y fork)子进程 i<childre ≤noo read eb child() intend) 客户子进程 close( fd) t(0) 服务器子进程 close( conned 图3多进程并发服务器流程图 Fig 3 The flow diagram of multi-process concurrent server for(;;){ 预先派生子进程服务器main函数的调用子程序的程序 lilen addrlen 如下 if((connfd accept(listenfd, cliaddr, &clilen ))<0)i pids calloc(children, sizeof(pid_t)); if (errno = EINTR for(i=0; i< children; i++) continue pids[i]= child_make(i, listenfd, addrlen 派生各个子进程的 chli make函数 err sys(“ accept error”); pid_t child_make(int i, int listened, int addrlen 每个子进程执行的无限循环的 clild main函数 void child main(int i, int listenfd, int addrlen) if(( childpid=fork()==0){子进程* 3.4程序的编译、测试和结果 close( listened);/关闭监听套接口*/ 1)在 Linux上使用gc4.3.2编译客户程序 client.c和服 web child( conned);/*处理请求* 务器程序 servO1.c和serv02.c,生成可执行文件 client(并发客 exit(o) 户程序),serv01(并发服务器程序),serv02(预先派生子进程 服务器程序),然后在一台装有 Linux的PC上分别运行服务 close( conned);/父进程关闭套接口* 器程序的可执行文件 servol和serv02。在另外两台装有 Linux的PC上运行客户程序 client(如图5所示) 3.3.2预先派生子进程服务器 TCP 预先派生子进程服务器是通过预先派生子进程来实现 客户端 的。预先派生子进程是让服务器在启动阶段调用fork创建 192.168.1.4 个子进程池。每个客户请求由当前可用子进程池中的某个 局域网 TCP (闲置)子进程处理(如图4所示)。 客户端 92.168.1.9 服务器 192.168.1.25 客户1 子进程1 TCP 客户1 子进程2 父进程 图5客户/服务器程序的性能测试 子进程3 可用子 ig. 5 The performance test of C/s programs 进程池 子进程N 2)先在PC的终端上运行服务器程序: /serv1192.168.1.258888 图4预先派生子进程服务器流程图 (192.168.1.25是服务器的P地址,8888是端口号) Fig. 4 The flow diagram of the preforking server 然后分别在两台PC的终端上运行客户程序 145- 《电子设计工程》2011年第3期 / client192.168.1.25888855004000 888855004000 (192.168.1.25是服务器的P地址,8888是端口号,5是 当客户程序完成所有的TCP交互,在服务器的终端按 子进程数,500是每个子进程的TCP连接数,4000是返回的“Crtl+C”中断,在终端得到用户CPU时间和系统CPU时间 字节数) 4)重复3)步骤,设置预先派生子进程数为30,45,60,75 当客户程序完成所有的TCP交互,在服务器的终端按90,105,400,1000分别进行测试。 “Crtl+C”中断,在终端得到用户CPU时间和系统CPU时间。 从表1可以看出预先派生子进程服务器的每次TCP交 3)先在PC上运行服务器程序/serv02192168..25888815互的平均用户CPU时间和平均系统CPU时间都只有并发服 (192.168.1.25是服务器的地址,8888是端口号,15是务器的三分之一,服务器的响应时间得到了大大地提高。从 预先派生子进程数) 表2可以得出这样的结论:随着预先派生子进程的增加,服 然后分别在两台PC上运行客户程序/ client192.168.1.25务器的响应时间也在恶化。 表1预先派生子进程并发服务器和并发服务器的性能比较 Tab. 1 Performance comparison of preforking server and concurrent server 服务器 客户 用户CPU时间/秒 系统CPU时间/秒 CPU时间/秒 client(192.168.1.9) 0.076004 3.59222 0.088005 3.57222 (192.168.1.25) client(192.168.14) 0.112006 3.56422 0.080005 3.54022 均值 0.089005 3.56722 3.656225 servO2(192.168.1.25) client(192.168.1.9) 0.016001 1.08807 (192.168.1.25) 0.012000 1.08407 (预先派生子进程数为15) client(192.168.1.4) 0.024001 1.16007 0.028001 1.15207 均值 0.020001 1.12107 1.141071 表2预先派生子进程数对预先派生子进程服务器的性能的影响 Tab. 2 The impact of the number of preforking on preforking servers performance 服务器客户 服务器的预先派生子进程数用户CPU时间/秒 系统CPU时间/秒 CPU时间/秒 0.008 126808 1.27608 0.016001 1.20807 1.224071 serv02 0.036002 1.14407 1.180072 (192.168.1.25) 75 0.028001 1.22008 1.248081 client 0.016001 1.24008 1.256081 (192.168.1.9) 105 0.020001 124408 1.264081 400 0.056003 1.73211 1.788113 1000 0.023601 2.42015 2.443751 4结论 器相比较,预先派生子进程服务器能够及时的处理客户连 接,并把服务器的响应时间降低到并发服务器的三分之 本文在基于TCP的回射服务器的基础上,面对字节流提高了服务器的性能。但是服务器还不能总是应对客户负载 pocket的缓冲区和TCP连接的交互的问题,改进了客户程的变动,当可用子进程数低于某个阈值时,会恶化服务器的响 序,实现了并发功能的客户以及并发服务器和预先派生子进应时间。这需要设计相应的算法持续监视可用的子进程数。 程服务器。在与并发客户的TCP交互中,与传统的并发服务 (下转第149页) 146 王长元,等一种基于Qos区分对待请求任务的研究 表1紧急指针字节定义 根据前面的结果,需要服务器处理请求任务时候优先处理付 Tab. 1 Emergency pointer bytes definition 费用户的队列,再优先处理其中高优先级的请求任务,当付 优先权 费用户的请求任务处理完之后,再处理非付费用户的请求任 第0~2位 优先权 务,同样也是优先处理其中高优先级的请求任务。 第3位 0=普通延迟,1=低延迟 3结束语 第4位 0=普通吞吐率,1=高吞吐率 本文描述了如何让客户定义自己要求的服务质量和如 第5位 0=一般可靠性,1=高可靠性 何利用Qos对服务器的请求任务进行区分。做到进行区别对 第6~7位 标志位 待,做了简单的设想。相比以前只有服务器资源得到比较有 系列的操作使能将请求任务进行区分,设置优先级,服务器效利用,而客户的服务质量要求得不到表达,还是有客户的 才能根据优先级对请求人物进行区别对待,使请求任务的要 请求任务得不到满足,影响了客户对服务器的信息,造成了 求的服务质量得到保证 损失。当今服务器面临的客户请求任务越来越多,如果能做 分类:采用分类方法中对源IP地址识别分辨出数据包到对各种服务质量要求的请求任务进行区别对待,用户又能 产生哪种应用,在3次握手中第一次握手当服务器接收到数 够自己描述自己服务质量,使服务器和客户都可以节省很多 据包时候,根据用户的P地址找到用户的相应信息判断用 时间和资源,真正做到双贏。 户的身份,区分用户是否是付费用户,在服务器中分为付费 参考文献 队列和非付费队列,通过区分用户身份将其放入相应的队 []林闯,单志广,盛立杰,等, Internet区分服务及其几个热点 列,优先处理付费用户。然后解析分别对队列中数据包中的 问题的研究J计算机报,2000,23(4):419-43 紧急指针,由此判断出请求任务要求的服务质量要求,即要 Lin Chuang, shan Zhi-guang, sHENG Li-jie, et al 求服务器需要提供服务的一种能力,包括专用带宽、抖动控 Differentiated services in the Internet [J. Chinese Journal of 制和延迟(用于实时和交互式流量情形)、丢包率的改进以及 Computers,2000,23(4)419-433 不同 WAN LAN和MAN技术下的指定网络流量等,同时确121 Alonso o, asati F, Kuno h,eta. Web Service concepts 保为每种流量提供的优先权不会阻碍其它流量的进程。 [J]. Architectures and Applications, Berlin: Springer, 2004 进行标志位标注:为了能让服务器对分类结果能够区别131 Ran S P, A model for Web services discovery with Qos[M ACM SIGecom Exchanges. 2003 对待,必须对分类结果进行标注,所以必须在数据包里面加 入标注位,在分类结束之后根据分类结果对每个数据包进行41 YuJia. Buyya Rajkumar, Tham Chen Khong. QoS based 标注,按照数据包中紧急指针显示出的服务质量要求区别进 scheduling of workflow applications on service grids [cyi 行标注,服务质量要求越高的标志位越高。 Proceedings of the 1st ieee international conference on 优先级设置:对数据包的标志位进行比较,根据标志位 e-Science and grid computing Melbourne, Australia, 2005 的大小,标志位越大优先级越高,依照此原则进行优先级设 [5] ITU2T. ITU2T2REC2X641-1997, Information technology 置。最后使得服务质量要求越高的请求任务优先级越高,服 quality of service: framework [S] [SI.: ITU2T, 1997. 务器处理请求任务时候也能根据优先级的大小进行处理,真61 DOGAN A, OZGUNER F. On Qos based scheduling of a 正做到区别对待 meta-task with multiple Qos demands in heterogeneous 25处理请求任务 computing [C]/Proc of Intl Parallel and Distributed 当将请求任务区分完之后,需要对请求任务区分对待。 Processing Symposium. Fort Lauderdale: s n. 2002 °·°·°°°··°°°°°° (上接第146页) 参考文献 张亚英,戚正伟,译,北京:人民邮电出版社,2006. l] Comer de.用TCP/P进行网际互联[M].1卷林瑶,张娟,[4]RFC.862. Echo Protocol[S]1983 王海,等,译.北京:电子工业出版社,2007 [5] Stevens w r, Rudoffa m.Unix网络编程[M]1卷.杨继张, [2] Comer de, Stevens d l.用TCP/P进行网际互联[M]3 译.北京:清华大学出版社,2006. 卷赵刚,林瑶,蒋慧,等,译.北京:电子工业出版社,2007.6]韦东山,嵌入式 Linux应用开发[M].北京:人民邮电出版 [3] Stevens w r, Rago s a.Unix环境高级编程[M].尤晋元 社2008 149

...展开详情
所需积分/C币:10 上传时间:2012-12-01 资源大小:929KB
举报 举报 收藏 收藏
分享 分享

评论 下载该资源后可以进行评论 1

azs14789 没什么意思, 我想看看有没有select 异步方式的,结果木有
2012-12-09
回复
Linux下基于TCP的预先派生子进程服务器的Socket编程

Linux下基于TCP的预先派生子进程服务器的Socket编程

立即下载
linux下基于TCP的多用户聊天室含文档.z

这是基于Linux下的采用TCP协议的多用户聊天室,适合初学者的参考与学习。

立即下载
论文研究-Linux下基于TCP的预先派生子进程服务器的Socket编程 .pdf

Linux下基于TCP的预先派生子进程服务器的Socket编程,和家强,刘彦隆,描述了客户/服务器模型以及常见的服务器类型--基于TCP的并发服务器。在一个基于TCP回射服务器程序的基础上,结合实际Web应用中的多进

立即下载
linux下基于TCP聊天代码

linux下基于TCP聊天代码,代码虽少,但是完整的架构已经有了,麻雀虽小五脏俱全

立即下载
linux下基于TCP协议的远程终端管理系统

linux下基于TCP协议的远程终端管理系统

立即下载
linux下基于TCP协议聊天程序

做的一个基于TCP协议的聊天程序,有两份代码,一份加了文件(最后也没实现文件传输),一份没加上。不过实现了如下功能: 1.在linux下实现网络聊天,包括群聊,一对一私聊等功能。 2.实现客户间的文件传输(做了个半吊子)。 3.保存聊天记录,以备查询。 4.实现管理员踢出用户功能。 5.实现会员用户的凸显功能。 6.实现无账号密码下的注册登录功能。 7.实现永久保存用户信息功能。 8.实现查询帮助功能。 9.实现管理员特权功能(禁言、踢人、撤销某人的管理员身份或提升某人为管理员)。 10.实现正常退出功能。

立即下载
Linux下基于TCP/IP协议的文件传输

通过Linux C编程,设计一个基于TCP/IP的文件传输系统,实现服务器端和客户端之间网络文件的收发。

立即下载
Linux下的基于TCP的网络编程实例

Linux下的基于TCP的网络编程实例,使用了多进程模式。代码较小,能快速掌握。

立即下载
linux下基于socket tcp 的答题系统

我自己练习用的LINUX的习题问答程序。软件尚有bug,但是90%可用。自带makefile,需要系统配置好sqlite3.主要使用socket、tcp、多进程、多线程、IO以及sqlite3的练习。client.C中需要自己设定配置本机的IP。可以自行扩充数据库,修改代码。

立即下载
Linux环境下基于TCP的Socket编程浅析

供大家借鉴学习之用 虽然还是偏重于理论 不过有助于你理清思路!

立即下载
linux基于tcp的文件传输

linux基于tcp的文件传输

立即下载
Linux环境下基于TCP的Socket编程浅析.pdf

论文摘要: Socket 适用于同一台计算机上的进程间通信, 同时也适用于网络环境中的进程间通信。他已成为当前许多操作系统的网络A P I, 也是网络操作系统中必不可少的基础功能。因特网为网络中的应用提供了 2 种类型的服务: 由 TCP 协议提供的面向连接服务和由U D P 协议提供的无连接服务。随着L inux 操作系统的不断推广, L inux 环境下的Socket 开发和研究一直是人们关注的热点。文章介绍了L inux 平台下的Socket 及其在TCP 协议下的编程原理, 并通过一个用Java 编写的基于 TCP 的客户ö服务器程序, 描述了网络中不同主机上的两个进程之间的

立即下载
linux基于tcp线程的聊天室

该聊天室可以实现公聊和私聊的功能,基于tcp的实现,用到多线程

立即下载
linux下的C基于TCP通信(多线程)

linux下的C基于TCP通信(多线程)!!!!

立即下载
基于LINUX的TCP通信

基于LINUX下的SOCKET通信,使用TCP协议.服务器将客户端发来的消息,倒序后再发给客户端.

立即下载
linux C语言基于tcp协议的信息传输的程序

linux C语言基于tcp协议的信息传输的程序 分别为unix domain 和internetdomain 下的程序

立即下载
基于linux下TCP的局域网聊天

具有群聊、私聊、显示在线用户、上传文件等功能。

立即下载
linux系统下基于TCP协议流媒体的简单实现(带实验报告)

linux系统下利用tcp协议传输视频流并用MPlayer播放器播放,内带实验报告,和MPlayer播放器的所有安装包及安装方法。

立即下载
linux下的分别基于TCP和UDP的端口扫描程序代码及文档

linux下的分别基于TCP和UDP的端口扫描程序代码及文档,简单实现,容易理解,编译通过。

立即下载
基于Linux的TCP程序示例

基于Linux的TCP程序示例基于Linux的TCP程序示例

立即下载