当前位置: 首页 > news >正文

html 手机网站xp做网站

html 手机网站,xp做网站,公司起名自动生成器,兼容手机的网站转载#xff1a;http://www.cnblogs.com/lizhenghn/p/3618986.html 前面两篇文章#xff08;参见#xff09;分别介绍了循环服务器和简单的并发服务器网络模型#xff0c;我们已经知道循环服务器模型效率较低#xff0c;同一时刻只能为一个客户端提供服务#xff0c;而且…转载http://www.cnblogs.com/lizhenghn/p/3618986.html 前面两篇文章参见分别介绍了循环服务器和简单的并发服务器网络模型我们已经知道循环服务器模型效率较低同一时刻只能为一个客户端提供服务而且对于TCP模型来说还存在单客户端长久独占与服务器的连接无法再响应其他连接对于前面介绍的并发服务器模型是比较简单的比如由于预先分配了固定进程数目就导致无法动态调整等问题。在前面我们也提到了对accept函数的处理是区分不同服务器模型的一个重要依据当然UDP服务器并不需要accept函数因此本次主要介绍TCP的高级并发模型。按照对accept的不同处理接下来主要介绍以下几种并发模型 单客户端单进程统一accept 服务器主进程等待客户端连接一旦有连接到来就创建一个进程用于响应单客户端单线程统一accept 服务器主进程等待客户端连接一旦有连接到来就创建一个线程用于响应单客户端单线程各自accept 预先分配多个线程在每一个线程里都独自等待客户端的连接并响应注意accept需要互斥访问 并发模型伪代码 /* 单客户端单进程统一accept */ /* 服务器主进程 */socket();bind();listen();while(1){accept();fork();//子进程}close(); //关闭服务器端套接字/* 服务器子进程1 */ recv();process();send();close();//关闭客户端套接字/* 服务器子进程2(同上) */ .................. /* 单客户端单线程统一accept */ /* 服务器主进程 */socket();bind();listen();while(1){accept();pthread_create(); //创建响应线程}close();//关闭服务器端套接字/* 服务器线程1 */ recv(); process(); send(); close();//关闭客户端套接字 /* 服务器线程2(同上) */ .................. /* 单客户端单线程各自accept */ /* 服务器主进程 */socket();bind();listen();pthread_create();//创建多个线程分别等待客户端连接pthread_join();//等待线程结束close();//关闭服务器端套接字/* 服务器线程1 */ mutex_lock()//互斥锁 accept(); mutex_unlock();recv(); process(); send(); close();//客户端套接字 /* 服务器线程2(同上) */ .................. 一个高级并发服务器模型的例子 单客户端单进程统一accept server端程序 1 /* 单客户端单进程统一accept --server端程序*/ 2 #include sys/types.h3 #include sys/socket.h4 #include netinet/in.h5 #include time.h6 #include string.h7 #include stdio.h8 #define BUFFLEN 10249 #define SERVER_PORT 12348 10 #define BACKLOG 5 11 12 static void handle_request(int s_c) 13 { 14 time_t now; 15 char buff[BUFFLEN]; 16 int n 0; 17 memset(buff, 0, BUFFLEN); 18 n recv(s_c, buff, BUFFLEN,0); 19 if(n 0 !strncmp(buff, TIME, 4)) 20 { 21 memset(buff, 0, BUFFLEN); 22 now time(NULL); 23 sprintf(buff, %24s\r\n,ctime(now)); 24 send(s_c, buff, strlen(buff),0); 25 } 26 27 close(s_c); /*关闭客户端*/ 28 } 29 30 static void handle_connect(int s_s) 31 { 32 33 int s_c; /*客户端套接字文件描述符*/ 34 struct sockaddr_in from; /*客户端地址*/ 35 int len sizeof(from); 36 37 /*主处理过程*/ 38 while(1) 39 { 40 s_c accept(s_s, (struct sockaddr*)from, len);/*接收客户端连接*/ 41 if(s_c 0)/*客户端成功连接创建进程进行数据处理*/ 42 { 43 if(fork() 0) /*父进程*/ 44 { 45 close(s_c); /*关闭父进程的客户端连接套接字*/ 46 } 47 else 48 { 49 handle_request(s_c);/*处理连接请求*/ 50 } 51 } 52 } 53 } 54 55 int main(int argc, char *argv[]) 56 { 57 int s_s; /*服务器套接字文件描述符*/ 58 struct sockaddr_in local; /*本地地址*/ 59 60 /*建立TCP套接字*/ 61 s_s socket(AF_INET, SOCK_STREAM, 0); 62 63 /*初始化地址*/ 64 memset(local, 0, sizeof(local)); 65 local.sin_family AF_INET;/*AF_INET协议族*/ 66 local.sin_addr.s_addr htonl(INADDR_ANY);/*任意本地地址*/ 67 local.sin_port htons(SERVER_PORT);/*服务器端口*/ 68 69 /*将套接字文件描述符绑定到本地地址和端口*/ 70 int err bind(s_s, (struct sockaddr*)local, sizeof(local)); 71 err listen(s_s, BACKLOG);/*侦听*/ 72 73 /*处理客户端连接*/ 74 handle_connect(s_s); 75 76 close(s_s); 77 78 return 0; 79 } 单客户端单进程统一accept server端程序 1 单客户端单线程统一accept server端程序2 #include sys/types.h3 #include sys/socket.h4 #include netinet/in.h5 #include time.h6 #include string.h #include pthread7 #include stdio.h8 #define BUFFLEN 10249 #define SERVER_PORT 12348 10 #define BACKLOG 5 11 12 static void *handle_request(void *argv) 13 { 14 int s_c *((int*)argv); 15 time_t now; 16 char buff[BUFFLEN]; 17 int n 0; 18 memset(buff, 0, BUFFLEN); 19 n recv(s_c, buff, BUFFLEN,0); 20 if(n 0 !strncmp(buff, TIME, 4)) 21 { 22 memset(buff, 0, BUFFLEN); 23 now time(NULL); 24 sprintf(buff, %24s\r\n,ctime(now)); 25 send(s_c, buff, strlen(buff),0); 26 } 27 28 close(s_c); /*关闭客户端*/ 29 } 30 31 static void handle_connect(int s_s) 32 { 33 int s_c; /*客户端套接字文件描述符*/ 34 struct sockaddr_in from; /*客户端地址*/ 35 int len sizeof(from); 36 pthread_t thread_do; 37 38 /*主处理过程*/ 39 while(1) 40 { 41 s_c accept(s_s, (struct sockaddr*)from, len);/*接收客户端连接*/ 42 if(s_c 0)/*客户端成功连接创建线程进行数据处理*/ 43 { 44 int err pthread_create(thread_do,NULL,handle_request,(void*)s_c; 45 } 46 } 47 } 48 49 int main(int argc, char *argv[]) 50 { 51 int s_s; /*服务器套接字文件描述符*/ 52 struct sockaddr_in local; /*本地地址*/ 53 54 s_s socket(AF_INET, SOCK_STREAM, 0);/*建立TCP套接字*/ 55 56 /*初始化地址*/ 57 memset(local, 0, sizeof(local)); 58 local.sin_family AF_INET;/*AF_INET协议族*/ 59 local.sin_addr.s_addr htonl(INADDR_ANY);/*任意本地地址*/ 60 local.sin_port htons(SERVER_PORT);/*服务器端口*/ 61 62 /*将套接字文件描述符绑定到本地地址和端口*/ 63 int err bind(s_s, (struct sockaddr*)local, sizeof(local)); 64 err listen(s_s, BACKLOG);/*侦听*/ 65 66 /*处理客户端连接*/ 67 handle_connect(s_s); 68 69 close(s_s); 70 71 return 0; 72 } 单客户端单线程各自accept --server端程序 /** 单客户端单线程各自accept --server端程序 */ #include sys/types.h #include sys/socket.h #include netinet/in.h #include time.h #include string.h #include stdio.h #include pthread #define BUFFLEN 1024 #define SERVER_PORT 12348 #define BACKLOG 5 #define CLIENT_NUM 3pthread_mutex_t g_lock PTHREAD_MUTEX_INTIALIZER;static void *handle_request(void *argv) {int s_s *((int*)argv); //服务器端套接字struct sockaddr_in from; /*客户端地址*/int len sizeof(from);int s_c -1; //客户端套接字for( ; ; ){time_t now; char buff[BUFFLEN];int n 0;memset(buff, 0, BUFFLEN);pthread_mutex_lock(g_lock);s_c accept(s_s,(struct sockaddr*)from, len);pthread_mutex_unlock(g_lock); n recv(s_c, buff, BUFFLEN,0);if(n 0 !strncmp(buff, TIME, 4)){memset(buff, 0, BUFFLEN);now time(NULL);sprintf(buff, %24s\r\n,ctime(now));send(s_c, buff, strlen(buff),0);}close(s_c); /*关闭客户端*/}return NULL; }static void handle_connect(int s_s) { int s_s s;pthread_t thread_do[CLIENT_NUM];for(int i0; iCLIENT_NUM;i){int err pthread_create(thread_do[i],NULL,handle_request,(void*)s_s;}//等待线程结束for(int i0; iCLIENT_NUM;i)pthread_join(thread_do[i],NULL); }int main(int argc, char *argv[]) {int s_s; /*服务器套接字文件描述符*/struct sockaddr_in local; /*本地地址*/ s_s socket(AF_INET, SOCK_STREAM, 0);/*建立TCP套接字*//*初始化地址*/memset(local, 0, sizeof(local));local.sin_family AF_INET;/*AF_INET协议族*/local.sin_addr.s_addr htonl(INADDR_ANY);/*任意本地地址*/local.sin_port htons(SERVER_PORT);/*服务器端口*//*将套接字文件描述符绑定到本地地址和端口*/int err bind(s_s, (struct sockaddr*)local, sizeof(local));err listen(s_s, BACKLOG);/*侦听*/handle_connect(s_s);/*处理客户端连接*/close(s_s);return 0; }
http://www.pierceye.com/news/634548/

相关文章:

  • 物流网站建设推广wordpress安全配置文件
  • 做网站用哪个服务器不用备案宣传网站设计
  • 网站建设哪种语言好电子商务型网站建设
  • 广州网站建设平台网站怎么做必须交钱吗
  • 做网站费免图片网站背景图网站
  • 上海电商网站开发公司门户网站建设 总结
  • 网站产品类别顺序如果修改wordpress多城市seo
  • 做网站托管的好处公司erp系统
  • 管局备案网站高端定制网站的特点
  • 成都极客联盟网站建设公司有没有帮别人做网站
  • 宝安专业网站设计公司公众号小程序怎么做
  • 郑州网站优化公司爱范儿 wordpress 主题
  • 电商网站建设书宣传片拍摄技巧
  • 珠海的门户网站有哪些app开发是什么专业
  • 网站建设推广报价简单网页素材
  • 建设企业官方网站的流程37玩手游官网平台
  • 南通网站建设方案开发网站建设运营公众号运营合同
  • 制作网站语言seo推广软件怎样
  • 企业网站建设的三种方式wordpress 导航高亮
  • 个人 建设图片分享网站网站开发设计步骤
  • 温州做阀门网站公司网站的建设时间怎么查
  • 好看的个人网站主页网站建设选择什么模式
  • 做内衣的网站校园网站建设网站
  • 学做网站论坛vip共享wordpress分类下文章排序
  • 文章内容网站系统网页编辑怎么打开
  • 建网站难吗查看关键词被搜索排名的软件
  • 同学会网站建设方案全免费无代码开发平台
  • 做网站给女朋友溧阳网站制作
  • 怎么注册电力建设公司网站wordpress用户注册邮箱验证
  • 用asp做的网站如何发布上海公司网站备案