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

网上做平面设计的网站有下划线的网址是什么网站

网上做平面设计的网站,有下划线的网址是什么网站,wordpress文章图片自动下载,中国做国外的网站1.select的缺点#xff1a; 1.select监听的文件描述符集合是一个数组#xff0c;有上限#xff08;1024个#xff09; 2.select监听的文件描述符集合在应用层#xff0c;内核层监听事件后需要传递给用户层带来资源开销 3.select需要用户手动查找产生事件的文件…1.select的缺点     1.select监听的文件描述符集合是一个数组有上限1024个     2.select监听的文件描述符集合在应用层内核层监听事件后需要传递给用户层带来资源开销     3.select需要用户手动查找产生事件的文件描述符     4.select只能工作在水平触发模式(低速模式)而无法工作在边沿触发模式(高速模式) 2.poll      int poll(struct pollfd *fds, nfds_t nfds, int timeout);     功能:         监听文件描述符集合工作方式类似于select      参数:         fds:文件描述符集合首地址         nfds:文件描述符集合的数组的长度          timeout:超时时间单位毫秒-1表示永久等待     返回值:         成功返回产生事件文件描述符个数          失败返回-1          超时仍然没有产生的事件返回0           struct pollfd {         int   fd;         /* file descriptor */         short events;     /* requested events */         short revents;    /* returned events */     }; read.c #include head.hint main(void) {int fd 0;char tmpbuff[4096] {0};struct pollfd fds[2];int nready 0;mkfifo(/tmp/myfifo, 0777);fd open(/tmp/myfifo, O_RDONLY);if (-1 fd){perror(fail to open);return -1;}fds[0].fd fd; //要监听的文件描述符fds[0].events POLLIN; //要监听的事件fds[1].fd 0;fds[1].events POLLIN;while (1){nready poll(fds, 2, -1);if (-1 nready){perror(fail to poll);return -1;}if (fds[0].revents POLLIN){memset(tmpbuff, 0, sizeof(tmpbuff));read(fd, tmpbuff, sizeof(tmpbuff));printf(FIFO:%s\n, tmpbuff);}if (fds[1].revents POLLIN){memset(tmpbuff, 0, sizeof(tmpbuff));gets(tmpbuff);printf(STDIN:%s\n, tmpbuff);}}close(fd);return 0; } 1.poll的缺点:         1.poll监听的文件描述符集合在应用层内核层监听事件后需要传递给用户层带来资源开销         2.poll需要用户手动查找产生事件的文件描述符         3.poll只能工作在水平触发模式(低速模式)而无法工作在边沿触发模式(高速模式) 3.epoll     1.epoll_create       int epoll_create(int size);       功能:         在内核层创建一张epoll监听的事件表       参数:         size:监听的事件表大小       返回值:          成功返回新的文件描述符         失败返回-1     2.epoll_ctl        int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);       功能         管理内核中epoll事件表       参数         epfd:文件描述符          op: EPOLL_CTL_ADD   添加客户端              EPOLL_CTL_MOD   修改客户端              EPOLL_CTL_DEL   删除客户端         fd:文件描述符          event:事件结构体       返回值         成功返回0          失败返回-1     typedef union epoll_data {         void        *ptr;         int          fd;         uint32_t     u32;         uint64_t     u64;     } epoll_data_t;     struct epoll_event {         uint32_t     events;      /* Epoll events */         epoll_data_t data;        /* User data variable */     };       events:EPOLLIN  EPOLLOUT  EPOLLET            3.epoll_wait           int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout);       功能:         监听epfd对应的事件表中是否有事件发生        参数          epfd:文件描述符          events:存放产生事件的数组空间首地址         maxevents:最多存放数组元素个数          timeout:超时时间单位毫秒-1表示永久等待       返回值:         成功返回实际发生事件的个数         失败返回-1          超时仍然没有产生事件返回0 #include head.hint main(void) { int epfd 0;int fd 0;int ret 0;char tmpbuff[4096] {0};struct epoll_event env;struct epoll_event retenv[2]; int nready 0;int i 0;mkfifo(/tmp/myfifo, 0777);fd open(/tmp/myfifo, O_RDONLY);if (-1 fd){perror(fail to open);return -1;}//创建一张内核监听的事件表epfd epoll_create(2);if (-1 epfd){perror(fail to epoll_create);return -1;}//将fd文件描述符加入事件表中env.events EPOLLIN;env.data.fd fd;ret epoll_ctl(epfd, EPOLL_CTL_ADD, fd, env);if (-1 ret){perror(fail to epoll_ctl);return -1;}//将0文件描述符加入事件表中env.events EPOLLIN;env.data.fd 0;ret epoll_ctl(epfd, EPOLL_CTL_ADD, 0, env);if (-1 ret){perror(fail to epoll_ctl);return -1;}while (1){ nready epoll_wait(epfd, retenv, 2, -1);if (-1 nready){perror(fail to epoll_wait);return -1;}for (i 0; i nready; i){if (retenv[i].data.fd fd){memset(tmpbuff, 0, sizeof(tmpbuff));read(fd, tmpbuff, sizeof(tmpbuff));printf(FIFO:%s\n, tmpbuff);}else if (retenv[i].data.fd 0){memset(tmpbuff, 0, sizeof(tmpbuff));gets(tmpbuff);printf(STDIN:%s\n, tmpbuff);}} }close(epfd);return 0; } epoll的优点         1.epoll没有文件描述符上限限制          2.epoll监听的事件表在内核层内核监听事件不需要操作用户层空间提高效率         3.epoll会获得产生事件的文件描述符,不需要用户查找         4.epoll可以工作在边沿触发模式(高速模式)提高效率 1.编写客户端和服务端实现基于UDP的聊天室     客户端         1.允许用户输入昵称         2.可以向服务端发送登录消息         3.可以向服务器发送退出消息         4.可以向服务器发送聊天消息     服务端          1.接收所有客户端的登录消息         2.接收所有客户端的退出消息         3.能够转发所有客户端的聊天消息 2.实现一个基于TCP的单词查询系统     dict.txt文件      1.编写客户端允许注册、注销、登录到服务器中     2.登录成功后客户端可以发送给服务器一个单词并获得单词的含义     3.客户端允许向服务器发送获得历史单词信息     1.服务器响应注册、注销、登录一系列功能     2.服务器响应客户端单词查询和历史搜索单词功能     3.服务器需要支持TCP并发模型支持多用户的并发请求 //服务端代码 #include head.hint main(int argc, char const *argv[]) {struct sockaddr_in seraddr;bzero(seraddr, sizeof(seraddr));int sockfd socket(AF_INET, SOCK_STREAM, 0);if(-1 sockfd){perror(fail to socket);return -1;}seraddr.sin_family AF_INET;seraddr.sin_port htons(50000);seraddr.sin_addr.s_addr INADDR_ANY;int bret bind(sockfd, (SA)seraddr, sizeof(seraddr));if(-1 bret){perror(fail to bind);return -1;}int lret listen(sockfd, 10);if(-1 lret){perror(fail to listen);return -1;}int serfd accept(sockfd, NULL, NULL);if(-1 serfd){perror(fail to accept);return -1;}FILE *fp fopen(dict.txt, r);if(fp NULL){perror(fail to fopen);return -1;}char word[128] {0};char summar[1024] {0};while(1){memset(word, 0, sizeof(word));fseek(fp, 0, SEEK_SET);recv(serfd, word, sizeof(word), 0);printf(%s\n, word);if(!strcmp(word, #quit)){break;}while(1){memset(summar, 0, sizeof(summar));char *psum summar;char *pret fgets(summar, sizeof(summar), fp);if(!strncmp(word, summar, strlen(word))){psum strlen(word);while(*psum ){psum;}send(serfd, psum, strlen(psum), 0);break;}if(NULL pret){char fail[64] please enter a correct word, or you can quit!\n;send(serfd, fail, strlen(fail), 0);break;}}}fclose(fp);close(sockfd);close(serfd);return 0; } //客户端代码 #include head.hint main(int argc, char const *argv[]) {struct sockaddr_in seraddr;bzero(seraddr, sizeof(seraddr));int sockfd socket(AF_INET, SOCK_STREAM, 0);if(-1 sockfd){perror(fail to socket);return -1;}seraddr.sin_family AF_INET;seraddr.sin_port htons(50000);seraddr.sin_addr.s_addr inet_addr(192.168.0.185);int conn connect(sockfd, (SA)seraddr, sizeof(seraddr));if(-1 conn){perror(fail to connect);return -1;}char word[128] {0};char mean[1024] {0};while(1){memset(word, 0, sizeof(word));memset(mean, 0, sizeof(mean));printf(enter a word:);scanf(%s, word);if(!strcmp(word, #quit)){break;}send(sockfd, word, strlen(word), 0);recv(sockfd, mean, sizeof(mean), 0);printf(%s, mean);}close(sockfd);return 0; } //头文件 #ifndef _HEAD_H_ #define _HEAD_H_#include stdio.h #include stdlib.h #include string.h #include strings.h #include sys/types.h #include sys/stat.h #include fcntl.h #include unistd.h #include netinet/ip.h #include netinet/in.h #include arpa/inet.h #include sys/socket.h#endif
http://www.hkea.cn/news/14389410/

相关文章:

  • 西湖区网站建设jsp网站自身安全性通过什么技术实现
  • 大同本地做网站的会泽网站建设
  • 网站开发的一般流程网站开发技术方案与实施
  • 网站优化电话wordpress主题适应手机浏览器
  • 小程序公司优化工具 wordpress
  • 深圳手机网站制作价钱深圳人才市场现场招聘信息
  • 定州网站建设公司网站开发哪里安全
  • 深圳网站开发培训价格iis做网站上传速度慢
  • 交易类网站seo怎么做苏州电信网站备案
  • 网站建设技术支持昆明网站制作报价
  • 哈尔滨住房城乡建设局网站首页wordpress a
  • 绍兴网站建设免费怎么制作公司网站
  • 自己做网站运营网站建设费用高低有什么区别
  • 网站建设能赚多少钱微信开发小程序开发网站建设
  • 图库网站建设搜索引擎排名优化方案
  • 网站动态效果用什么软件做的广东网站建设设计服务
  • 企业网站备案价格网络搭建教程
  • 铜仁市住房和城乡建设部网站装潢设计什么意思
  • 庆阳做网站的公司博购企业名录搜索软件
  • 没有排名的网站怎么做济南制作网站企业
  • 怎么做网站公众号ui设计师是做网站吗
  • wordpress获取站点副标题网站建设哪些网站可以
  • 大型网站seo方案站长工具介绍
  • 全国网站建设汇编wordpress 搜索关键词
  • pc网站与手机网站手机响应式网站怎么做
  • 网站对接qq群 虚拟主机wordpress searchform.php
  • 聊城手机网站公司电话防钓鱼网站宣传
  • 邢台县建设局网站网站流量查询最准的
  • 南充做网站多少钱建设网站视频
  • 中国石油天然气第六建设公司网站常见的线下推广渠道有哪些