Linux网络编程之IO复用循环服务器.doc

Linux网络编程之IO复用循环服务器.doc

ID:56794191

大小:39.50 KB

页数:8页

时间:2020-07-12

Linux网络编程之IO复用循环服务器.doc_第1页
Linux网络编程之IO复用循环服务器.doc_第2页
Linux网络编程之IO复用循环服务器.doc_第3页
Linux网络编程之IO复用循环服务器.doc_第4页
Linux网络编程之IO复用循环服务器.doc_第5页
资源描述:

《Linux网络编程之IO复用循环服务器.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1.介绍在前几节,我们介绍了循环服务器,并发服务器.简单的循环服务器每次只能处理一个请求,即处理的请串行的。而并发服务器可以通过创建多个进程或者是线程来并发的处理多个请求。但由于进程或线程的切换会带来一定的开销。而且随着客户端请求的增多,创建的线程或进程的数目也越来越多,开销势必会增加。因此,本文提出了I/O复用的循环服务器。I/O复用的循环服务器创建两个线程,一个是客户端连接处理线程,专门用来处理客户端的连接,当有客户端到来的时候,此线程把客户端的套接字描述符放到一块公共的区域中。另一个是业务处理线程,此线程轮循(select)客户端套接字描述符集合

2、中有没有数据到来,如果有数据到来,那么就进行处理。2.I/O复用循环服务器处理流程socket(...);bind(...);listen(...);pthread_create(...);pthread_join(..);close(...);//关闭服务器套接字连接处理线程:while(1){ accept(...); store(...);//存储客户端套接字描述符}业务处理线程:while(1){ get(...);//取出套接字描述符放到FD_SET select(...); recv(....); process(...); send(..

3、.); close(....);}从算法的主要流程可以看出,I/O复用循环服务器只用两个线程,一个是请求业务连接线程,专门处理连接。另一个是业务处理线程,轮循客户端的套接字有没有数据。3.相关例子服务器;#include#include#include#include#include#include#include#include/**I/O复用循环服务器I/O并发服务器随着客

4、户端的增多,必须增加处理单元,系统的负载会移动多个处理单元的切换上,切换进程或者是线程而I/O复用服务器包括两个线程,一个是业务连接线程,专门处理客户端的连接,另一个是业务请求处理线程,对多个客户端描述符进行一定时间的等待,即select监听多个描述符**/#definePORT8888#defineCLIENTNUM1024#defineBUFFERSIZE1024#defineBACKLOG10staticintconnect_host[CLIENTNUM];staticintconnect_number=0;//连接的客户数staticvoid*

5、handle_connect(void*argv){//业务连接函数,处理客户端的连接,将客户端的套接字描述符加入到连接池中  intret;  ints; intsc;  s=*((int*)argv);//服务端套接字描述符  inti=0;  structsockaddr_inclient_addr; intlen; len=sizeof(structsockaddr_in);  for(;;){//监听有没有客户端到来    sc=accept(s,(structsockaddr*)&client_addr,&len);    printf("

6、aclientconnect,from:%s",inet_ntoa(client_addr.sin_addr));        if(sc>0){       for(i=0;i

7、oid*handle_request(void*argv){  time_tnow;  charbuffer[BUFFERSIZE];  intsize; //设置轮循的时间,每隔1秒 structtimevaltv; tv.tv_sec=1; tv.tv_usec=0; intret; inti=0; intmaxfd; fd_setscanfd; for(;;){    FD_ZERO(&scanfd);//清空文件描述符集合    //将文件描述符放入文件描述符集合  for(i=0;i

8、host[i]!=-1){      FD_SET(connect_host[i],&scan

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。