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

保定网站建设方案托管广州seo黑帽培训

保定网站建设方案托管,广州seo黑帽培训,wordpress微信缩略图,网站开发可选择的方案有哪些转载#xff1a;http://www.cnblogs.com/lizhenghn/p/3617608.html 在网络程序里面#xff0c;通常都是一个服务器处理多个客户机#xff0c;为了出个多个客户机的请求#xff0c;服务器端的程序有不同的处理方式。本节开始介绍Linux下套接字编程的服务器模型选择#xff…转载http://www.cnblogs.com/lizhenghn/p/3617608.html 在网络程序里面通常都是一个服务器处理多个客户机为了出个多个客户机的请求服务器端的程序有不同的处理方式。本节开始介绍Linux下套接字编程的服务器模型选择主要包括循环服务器模型、并发服务器模型、IO复用服务器模型等这也是我们常见的几种网络服务器模型。其中基本可以分为两大类 1. 循环服务器循环服务器在同一时刻只能响应一个客户端的请求是比较简单的一种模型 2. 并发服务器并发服务器在同一时刻可以响应多个客户端的请求这里面又有很多分类接下来会逐步介绍 循环服务器模型      循环服务器是指对于客户端的请求和连接服务器逐个进行处理处理完一个连接后再处理下一个连接属于串行处理方式结构比较简单。该模型的算法过程如下 /* UDP循环服务器模型 */ socket(); bind(); while(true) { recvfrom(); process(); sendto(); } close(); /* TCP循环服务器模型 */ socket(); bind(); listen(); while(true) { accept(); while(true) { recv(); process(); send(); } close(); } 从上面的的流程可以看出TCP循环服务器比UDP循环服务器多了一个accept的过程这也是TCP和UDP套接字编程的主要区别。TCP服务器在accept出等待客户端的到来因为accept函数是阻塞的因此TCP服务器会在此等待对accept函数的不同处理是区分各类服务器的一个重要参考依据。相应地UDP会在recvfrom阻塞并等待客户端的连接。 一个循环服务器的例子 下面给出一个简单的循环服务器样子模拟服务器对外提供时间服务器等待客户端到来并返回给客户端服务器的当前时间。 UDP循环服务器 1 /** UDP循环服务器--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 12345 10 int main(int argc, char *argv[]) 11 { 12 int s; //服务器套接字文件描述符 13 struct sockaddr_in local, to; //本地地址 14 time_t now; //时间 15 char buff[BUFFLEN];//收发数据缓冲区 16 int n 0; 17 int len sizeof(to); 18 19 //建立UDP套接字 20 s socket(AF_INET, SOCK_DGRAM, 0); 21 22 //初始化地址 23 memset(local, 0, sizeof(local)); 24 local.sin_family AF_INET;//AF_INET协议族 25 local.sin_addr.s_addr htonl(INADDR_ANY);//任意本地地址 26 local.sin_port htons(SERVER_PORT);//服务器端口 27 28 //将套接字文件描述符绑定到本地地址和端口 29 int err bind(s, (struct sockaddr*)local, sizeof(local)); 30 31 //主处理过程 32 while(1) 33 { 34 memset(buff, 0, BUFFLEN); 35 n recvfrom(s, buff, BUFFLEN,0,(struct sockaddr*)to, len);//接收发送方数据 36 if(n 0 !strncmp(buff, TIME, 4))//判断是否合法接收数据 37 { 38 printf(Get One Client Connect\n); 39 memset(buff, 0, BUFFLEN); 40 now time(NULL); 41 sprintf(buff, %24s\r\n,ctime(now)); 42 sendto(s, buff, strlen(buff),0, (struct sockaddr*)to, len);//发送数据 43 } 44 } 45 close(s); 46 47 return 0; 48 } 1 /** UDP循环服务器--client端程序**/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 12345 10 int main(int argc, char *argv[]) 11 { 12 int s; //服务器套接字文件描述符 13 struct sockaddr_in server; //本地地址 14 time_t now; 15 char buff[BUFFLEN]; 16 int n 0; 17 int len 0; //地址长度 18 19 //建立UDP套接字 20 s socket(AF_INET, SOCK_DGRAM, 0); 21 22 //初始化地址接 23 memset(server, 0, sizeof(server)); 24 server.sin_family AF_INET;//AF_INET协议族 25 server.sin_addr.s_addr htonl(INADDR_ANY);//任意本地地址 26 server.sin_port htons(SERVER_PORT);//服务器端口 27 28 memset(buff, 0, BUFFLEN); 29 strcpy(buff, TIME); 30 //发送数据 31 sendto(s, buff, strlen(buff), 0, (struct sockaddr*)server, sizeof(server)); 32 memset(buff, 0, BUFFLEN); 33 //接收数据 34 len sizeof(server); 35 n recvfrom(s, buff, BUFFLEN, 0, (struct sockaddr*)server, len); 36 if(n 0) 37 printf(TIME:%s,buff); 38 39 close(s); 40 41 return 0; 42 }    TCP循环服务器 1 /** TCP循环服务器--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 12346 10 #define BACKLOG 5 11 int main(int argc, char *argv[]) 12 { 13 int s_s, s_c; /*服务器套接字文件描述符*/ 14 struct sockaddr_in local, from; /*本地地址*/ 15 time_t now; 16 char buff[BUFFLEN]; 17 int n 0; 18 int len sizeof(from); 19 20 /*建立TCP套接字*/ 21 s_s socket(AF_INET, SOCK_STREAM, 0); 22 23 /*初始化地址*/ 24 memset(local, 0, sizeof(local)); 25 local.sin_family AF_INET;/*AF_INET协议族*/ 26 local.sin_addr.s_addr htonl(INADDR_ANY);/*任意本地地址*/ 27 local.sin_port htons(SERVER_PORT);/*服务器端口*/ 28 29 /*将套接字文件描述符绑定到本地地址和端口*/ 30 int err bind(s_s, (struct sockaddr*)local, sizeof(local)); 31 err listen(s_s, BACKLOG);/*侦听*/ 32 33 /*主处理过程*/ 34 while(1) 35 { 36 /*接收客户端连接*/ 37 s_c accept(s_s, (struct sockaddr*)from, len); 38 memset(buff, 0, BUFFLEN); 39 n recv(s_c, buff, BUFFLEN,0);/*接收发送方数据*/ 40 if(n 0 !strncmp(buff, TIME, 4))/*判断是否合法接收数据*/ 41 { 42 memset(buff, 0, BUFFLEN); 43 now time(NULL); 44 sprintf(buff, %24s\r\n,ctime(now)); 45 send(s_c, buff, strlen(buff),0);/*发送数据*/ 46 } 47 close(s_c); 48 } 49 close(s_s); 50 51 return 0; 52 }   /**TCP循环服务器--client端程序**/ #include sys/types.h #include sys/socket.h #include netinet/in.h #include string.h #include stdio.h#define BUFFLEN 1024 #define SERVER_PORT 12346 int main(int argc, char *argv[]) {int s; /*服务器套接字文件描述符*/struct sockaddr_in server; /*本地地址*/char buff[BUFFLEN];int n 0; /*建立TCP套接字*/s socket(AF_INET, SOCK_STREAM, 0);/*初始化地址*/memset(server, 0, sizeof(server));server.sin_family AF_INET;/*AF_INET协议族*/server.sin_addr.s_addr htonl(INADDR_ANY);/*任意本地地址*/server.sin_port htons(SERVER_PORT);/*服务器端口*/ /*连接服务器*/int err connect(s, (struct sockaddr*)server,sizeof(server));memset(buff, 0, BUFFLEN);strcpy(buff, TIME);/*发送数据*/send(s, buff, strlen(buff), 0);memset(buff, 0, BUFFLEN);/*接收数据*/ n recv(s, buff, BUFFLEN, 0);if(n 0){printf(TIME:%s,buff); }close(s);return 0; }   两者返回给客户端的的输出都是一样的比如TIME:Sat Mar 22 15:26:25 2014   循环服务器的介绍就到这里。接下来介绍并发服务器模型。
http://www.pierceye.com/news/565794/

相关文章:

  • 延吉最好的网站建设公司单位建设网站需要的材料
  • 做可视化的网站宿迁 网站制作
  • 深圳如何搭建制作网站济南网站排名推广
  • 六感程序网站建设网站建设材料
  • 大气个人网站源码一般做门户网站多少钱
  • 东营网站推广排名榆林市工程造价信息网
  • 电影网站排名怎么做制作网站的步骤和方法
  • 请大学生做网站广东恒力建设工程有限公司网站
  • 辽宁建设工程造价管理网站业务外包服务公司
  • 合肥制作网站学校如何建设网站
  • 网站设计机构网站后台管理系统登录
  • 国家单位网站建设要多久网络营销推广公司获客
  • 网站开发 app全网推广代运营
  • 毕业设计做网站还是系统com域名注册量
  • 营销型网站建设的重要原则爱上链外链购买平台
  • 做视频网站怎么挣钱怎样进入公众号平台登录
  • 有域名怎么做公司网站天河网站建设集团
  • 重庆做网站建设的公司中国企业500强净利润排名
  • 乐亭中关村建站快车免费seo刷排名
  • 购物网站修改注册信息模块的分析查域名是否注册
  • 优秀的定制网站建设公司外汇跟单网站建设
  • 公益网站建设 参考文献赣州专业做网站
  • 梅州建站公司阳性几天就不传染人了
  • 网站建设的简历高端网站设计上海网站建设上海
  • 南京专业网站制作宁波妇科医院私立哪家医院好
  • 西安市建设局官方网站做词云的网站
  • 网站开发人员岗位要求马洪旭 做的网站大学
  • 凡科做网站是否安全网站效果代码
  • 腾讯云做网站干什么用公司的网站建设规划书
  • 网页设计如何设置背景北京建站优化