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

做网站实现图片自动压缩做网站开发有什么专业证

做网站实现图片自动压缩,做网站开发有什么专业证,拓者设计吧现代装修效果图,wordpress是免费的吗1. 函数a. 参数#xff1a;#xff08;1#xff09;fds:是一个struct pollfd结构类型的指针#xff0c;指向用于存放需要检测状态的Socket描述符#xff1b;每当调用这个函数之后#xff0c;系统不会清空这个数组#xff0c;操作起来比较方便#xff1b;特别是对于sock… 1. 函数a. 参数1fds:是一个struct pollfd结构类型的指针指向用于存放需要检测状态的Socket描述符每当调用这个函数之后系统不会清空这个数组操作起来比较方便特别是对于socket连接比较多的情况下在一定程度上可以提高处理的效率这一点与select()函数不同调用select()函数之后select()函数会清空它所检测的socket描述符集合导致每次调用select()之前都必须把socket描述符重新加入到待检测的集合中因此select()函数适合于只检测一个socket描述符的情况而poll()函数适合于大量socket描述符的情况fd:表示所要关心的文件描述符events:表示该文件描述符所关心的事件这是一个输入型参数要告诉操作系统这个文件描述符对应的事件所关心的操作事件是什么比如读或写revents:表示当poll返回时告诉用户什么操作事件是就绪的比如如果POLLIN是就绪的那么返回时revent的值就是POLLIN告诉用户fd事件的POLLIN是就绪的是一个输出型参数。2nfds:标记指针fds所指向的结构体元素的总数量3timeoutpoll函数调用阻塞的时间单位毫秒。和select的一样如果参数timeout设为INFTIMselect将一直被阻塞直到某个文件描述符上发生了事件。0select将以非阻塞方式等即检测描述符集的状态后立即返回并不等待外部事件的发生。大于0的值poll()函数会阻塞timeout所指定的毫秒时间长度之后返回如果在指定的时间段里没有事件发生select将超时返回0。c. 返回值1成功则返回fds指针所指向的内容中准备好的读、写或出错状态的那些socket描述符的总数量返回值02poll函数调用失败返回-1同时会自动设置全局变量errno3超过timeout时间返回0。没有任何socket描述符准备好读、写或出错2. poll和select对比1不同select使用三个位图来表示三个fdset的方式poll使用一个 pollfd的指针实现。pollfd结构包含了要监视的event和发生的event不再使用select“参数-值”传递的方式。pollfd并没有最大数量限制但是数量过大后性能也是会下降。 2相同和select函数一样poll返回后需要轮询pollfd来获取就绪的描述符。从上面看select和poll都需要在返回后通过遍历文件描述符来获取已经就绪的socket。事实上同时连接的大量客户端在一时刻可能只有很少的处于就绪状态因此随着监视的描述符数量的增长其效率也会线性下降。3.代码实现//poll_server.c1 #includestdio.h2 #includestdlib.h3 #includeassert.h4 #includepoll.h5 #includeunistd.h6 #includesys/socket.h7 #includesys/types.h8 #includearpa/inet.h9 #includenetinet/in.h10 11 #define _BACKLOG_ 512 #define _NUM_ 1013 14 static void usage(const char* proc)15 {16     printf(usage:%s [ip]  [port]\n,proc);17 }18 static int startup(char* ip,int port)19 {20     assert(ip);21     //22     int socksocket(AF_INET,SOCK_STREAM,0);23     if(sock0)24     {25         perror(socket);26         exit(1);27     }28     //29     struct sockaddr_in local;30     local.sin_familyAF_INET;31     local.sin_porthtons(port);32     local.sin_addr.s_addrinet_addr(ip);33     //34     if(bind(sock,(struct sockaddr*)local,sizeof(local))0)35     {36         perror(bind);37         exit(2);38     }39     if(listen(sock,_BACKLOG_)0)40     {41         perror(listen);42         exit(3);43     }44     return sock;45 }46 int main(int argc,char* argv[])47 {48     if(argc!3)49     {50         usage(argv[0]);51         exit(1);52     }53     char* ipargv[1];54     int portatoi(argv[2]);55 56     int listen_sockstartup(ip,port);57 58     struct sockaddr_in client;59     socklen_t lensizeof(client);60 61     struct pollfd fds[_NUM_];62     int max_fd1;//int max_fdfds[0].fd63     int _timeout5000;64     fds[0].fdlisten_sock;//why locate65     fds[0].eventsPOLLIN;66     fds[0].revents0;67 68     size_t i1;69     for(;i_NUM_;i)70     {71         fds[i].fd-1;72         fds[i].events0;73         fds[i].revents0;74     }75     while(1)76     {77         switch(poll(fds,max_fd,_timeout))78         {79             case -1:80                 perror(poll);81                 break;82             case 0:83                 printf(timeout...\n);84                 break;85             default:86                 {87                     i0;88                     for(;i_NUM_;i)89                     {90                         if((fds[i].fdlisten_sock)(fds[i].reventsPOLLIN    ))91                         {92                             int new_sockaccept(listen_sock,(struct sockaddr    *)client,len);93                             if(new_sock0)94                             {95                                 perror(accept);96                                 continue;97                             }98                             printf(get a new connect...%d\n,new_sock);99                             for(i0;i_NUM_;i) 100                             { 101                                 if(fds[i].fd-1) 102                                 { 103                                     fds[i].fdnew_sock; 104                                     fds[i].eventsPOLLIN; 105                                     max_fd; 106                                     break; 107                                 } 108                             } 109                             if(i_NUM_) 110                             { 111                                 close(new_sock); 112                             } 113                         } 114                         else if((fds[i].fd0)(fds[i].reventsPOLLIN)) 115                         { 116                             char buf[1024]; 117                             ssize_t _sread(fds[i].fd,buf,sizeof(buf)-1); 118                             if(_s0) 119                             { 120                                 //read sucess 121                                 buf[_s]\0; 122                                 printf(client:%s\n,buf); 123                             } 124                             else if(_s0) 125                             { 126                                 //client shutdown 127                                 printf(client shutdown...\n); 128                                 // 129                                 struct pollfd tmpfds[i]; 130                                 fds[i]fds[max_fd-1]; 131                                 fds[max_fd-1]tmp; 132                                 // 133                                 close(fds[max_fd-1].fd); 134                                 // 135  136                                 fds[max_fd-1].fd-1; 137                                 fds[max_fd-1].events0; 138                                 fds[max_fd-1].revents0; 139                                 //easy ignore 140                                 --max_fd; 141                             } 142                             else 143                             { 144                                 perror(read); 145                             } 146                         } 147                         //normal socket 148                         else 149                         {} 150                     } 151                 } 152                 break; 153         } 154     } 155     return 0; 156 }//poll_client.c1 #includestdio.h2 #includestdlib.h3 #includestring.h4 #includesys/types.h5 #includesys/socket.h6 #includenetinet/in.h7 #includearpa/inet.h8 #includeunistd.h9 10 void usage(const char* proc)11 {   12     printf(%s [ip] [port]\n,proc);13     exit(1);14 }15 int main(int argc,char* argv[])16 {17     if(argc!3)18     {19         usage(argv[0]);20         exit(1);21     }22     int server_ipinet_addr(argv[1]);23     int server_portatoi(argv[2]);24 25     int client_socksocket(AF_INET,SOCK_STREAM,0);26     if(client_sock0)27     {28         perror(socket);29         exit(2);30     }31     struct sockaddr_in server;32     server.sin_familyAF_INET;33     server.sin_addr.s_addrserver_ip;34     server.sin_porthtons(server_port);35 36     if(connect(client_sock,(struct sockaddr*)server,sizeof(server))0)37     {38         perror(connect);39         exit(3);40     }41     char buf[1024];42     while(1)43     {44         memset(buf,\0,sizeof(buf));45         printf(Please Input: );46         fflush(stdout);47         fgets(buf,sizeof(buf)-1,stdin);48         if(send(client_sock,buf,sizeof(buf)-1,0)0)49         {50             perror(send);51             continue;52         }53         ssize_t _sizerecv(client_sock,buf,sizeof(buf)-1,0);54         if(_size0)55         {56             buf[_size]\0;57             printf(server receive:%s\n,buf);58         }59     }60     return 0;61 }//makefile1 .PHONY:all2 all:poll_server poll_client3 poll_server:poll_server.c4     gcc -o $ $^5 poll_client:poll_client.c6     gcc -o $ $^7 .PHONY:clean8 clean:9     rm -f poll_server poll_client//start.sh1 #!/bin/bash2 3 service iptables stop4 ./poll_server 192.168.163.128 8080运行结果 转载于:https://blog.51cto.com/10707460/1794320
http://www.zqtcl.cn/news/779173/

相关文章:

  • 网站开发知识视频教程公司网站总感觉少点什么找什么人做
  • 做网站ps建立多大的画布网站排名监控工具
  • 烟台网站开发网站建设横幅标语
  • 微信公众号素材网站在线资源链接
  • 网站开发地图板块浮动国际重大新闻事件10条
  • 成品网站app开发wordpress宽度调整
  • 小型网站建设需要多少钱网站发布内容是否过滤
  • 网站如何推广运营漳平网站编辑价格
  • 海洋优质的网站建设企业微信下载官方网站
  • 十大免费ae模板网站wordpress 远程设置
  • 青岛网站的优化云南抖音推广
  • 做中英文版的网站需要注意什么如何偷别人dedecms网站的模板
  • 免费微网站制作最近三天发生的重要新闻
  • 网站优化网络推广seo编程软件python
  • 建设部网站官网合同免费申请网站永久
  • 遵化建设局网站哈尔滨网站制作公司价格
  • 科技因子网站建设方案河南网站推广优化公司
  • 什么网站了解国家建设的行情如何建设自己的php网站
  • 大连市平台网站外包公司和劳务派遣
  • 广州建网站公司排名嵌入式软件开发工程师工作内容
  • 计算机软件网站建设免费asp网站源码
  • 网站建设介绍ppt镇江网站搜索引擎优化
  • 珠海自助建站软件泉州网站开发
  • ios个人开发者账号多少钱拼多多seo怎么优化
  • 五金网站建设信息产业部备案网站
  • 网站被百度惩罚放弃互联网平台宣传推广方案
  • 自己怎么做网站首页自动app优化
  • 图形设计网站泉州网站建设企业
  • 免费建各种网站有没有做网站的团队
  • 做网站做网站的公司电商网站怎么做