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

用wang域名做购物网站怎么样如何规范使用静态网站

用wang域名做购物网站怎么样,如何规范使用静态网站,全屋定制给设计吗,用js做的网站● 应用程序中同时处理多路输入输出流#xff0c;若采用阻塞模式#xff0c;得不到预期的目的#xff1b; ● 若采用非阻塞模式#xff0c;对多个输入进行轮询#xff0c;但又太浪费CPU时间#xff1b; ● 若设置多个进程/线程#xff0c;分别处理一条数据通路#xff… ● 应用程序中同时处理多路输入输出流若采用阻塞模式得不到预期的目的 ● 若采用非阻塞模式对多个输入进行轮询但又太浪费CPU时间 ● 若设置多个进程/线程分别处理一条数据通路将新产生进程/线程间的同步与通信问题使程序变得更加复杂 ● 比较好的方法是使用I/O多路复用技术。 其select基本思想是 ○ 先构造一张有关描述符的表最大1024然后调用一个函数。 ○ 当这些文件描述符中的一个或多个已准备好进行I/O时函数才返回。 ○ 函数返回时告诉进程哪个描述符已就绪可以进行I/O操作。 用select创建并发服务器可以与多个客户端进行通信监听键盘、socket、多个acceptfd 循环服务器一个客户端可以连接多个客户端但是不能同时 并发服务器一个服务器可以同时处理多个客户端的请求 #include stdio.h #include stdlib.h #include sys/types.h #include sys/socket.h #include sys/select.h #include sys/time.h #include sys/stat.h #include fcntl.h #include netinet/in.h #include netinet/ip.h #include unistd.h #include arpa/inet.h #include string.h// tcp服务器一共有两种文件描述符一类用于连接一类用于通信 int main(int argc, char const *argv[]) {char buf[128];int ret;if (argc ! 2){printf(usage:%s 端口号\n, argv[0]);return -1;}// 1.创建套接字socket// socket函数返回值用于连接的文件描述符int sockfd socket(AF_INET, SOCK_STREAM, 0);if (sockfd 0){perror(socket err);return -1;}printf(sockfd:%d\n, sockfd);// 2. 指定网络信息struct sockaddr_in saddr, caddr;saddr.sin_family AF_INET; // IPV4saddr.sin_port htons(atoi(argv[1])); // 端口号// saddr.sin_addr.s_addr inet_addr(0.0.0.0); // 虚拟机IP地址(自动获取)saddr.sin_addr.s_addr INADDR_ANY; // 虚拟机IP地址// INADDR_ANY是一个常量它指代的是一个特殊的IP地址即0.0.0.0// 在网络编程中当一个进程需要绑定一个网络端口时可以使用INADDR_ANY来指定该端口可以接受来自任何IP地址的连接请求int len sizeof(caddr);// 3.绑定套接字bindif (bind(sockfd, (struct sockaddr *)saddr, sizeof(saddr)) 0){perror(bind err);return -1;}printf(bind ok\n);// 4.监听套接字listenif (listen(sockfd, 6) 0){perror(listen err);return -1;}printf(listen ok\n);//******************************************************************//// 1)构造一张关于文件描述符的表fd_set rfds, tempfds;int maxfd;// 2)清空表 FD_ZEROFD_ZERO(rfds);FD_ZERO(tempfds);// 3)将关心的文件描述符添加到表中 FD_SETFD_SET(sockfd, rfds);FD_SET(0, rfds);maxfd sockfd;while (1){// 将原来的表复制给新表tempfds rfds;struct timeval tm {1, 0}; // 超时检测// 4)调用select函数监听 selectret select(maxfd 1, tempfds, NULL, NULL, 0);if (ret 0){perror(select err);return -1;}else if(ret0){printf(time out\n);}// 5)判断到底是哪一个或者是哪些文件描述符发生了事件 FD_ISSETif (FD_ISSET(0, tempfds)){fgets(buf, sizeof(buf), stdin);printf(keybroad:%s\n, buf);}if (FD_ISSET(sockfd, tempfds)){// 5.接受客户端连接请求accept// accept函数返回值用于通信的文件描述符int acceptfd accept(sockfd, (struct sockaddr *)caddr, len);if (acceptfd 0){perror(accpet err);return -1;}printf(port:%d ip:%s\n, ntohs(caddr.sin_port), inet_ntoa(caddr.sin_addr));printf(accpetfd:%d\n, acceptfd);// 将用于通信的文件描述符加入表中FD_SET(acceptfd, rfds);if (acceptfd maxfd)maxfd acceptfd;}for (int i sockfd 1; i maxfd; i) // 循环判断哪些文件描述符发生响应{if (FD_ISSET(i, tempfds)){// 6. 接收发送数据recvsendret recv(i, buf, sizeof(buf), 0);if (ret 0){perror(recv err);break;}else if (ret 0){printf(client %d exit\n, i);close(i); // 关闭退出的客户端文件描述符FD_CLR(i, rfds); // 将关闭的文件描述符从表中删除while (!FD_ISSET(maxfd, rfds))maxfd--;}else{printf(client %d: %s\n, i, buf);memset(buf, 0, sizeof(buf));}}}}//*****************************************************************//// 7.关闭套接字closeclose(sockfd);return 0; }使用poll实现client的收发功能 #include stdio.h #include stdlib.h #include sys/time.h #include sys/types.h #include sys/socket.h #include sys/stat.h #include fcntl.h #include netinet/in.h #include netinet/ip.h #include unistd.h #include arpa/inet.h #include string.h #include poll.h int main(int argc, char const *argv[]) {char buf[128];if (argc ! 3){printf(usage:%s IP地址 端口号\n, argv[0]);return -1;}// 1.创建套接字socketint sockfd socket(AF_INET, SOCK_STREAM, 0);if (sockfd 0){perror(socket err);return -1;}printf(sockfd:%d\n, sockfd);// 2.指定服务器网络信息struct sockaddr_in saddr;saddr.sin_family AF_INET; // IPV4saddr.sin_port htons(atoi(argv[2])); // 端口号saddr.sin_addr.s_addr inet_addr(argv[1]); // 虚拟机IP地址// 3.连接connectif (connect(sockfd, (struct sockaddr *)saddr, sizeof(saddr)) 0){perror(connect err);return -1;}printf(connect ok\n);// 4.接收发送消息recv send//************************************************************//// 1)创建结构体数组struct pollfd fds[2];// 2)将关心的文件描述符添加到数组中并赋予事件fds[0].fd 0; // 键盘fds[0].events POLLIN; // 想要发生的事件fds[1].fd sockfd; // 套接字fds[1].events POLLIN; // 想要发生的事件// 3)保存数组内最后一个有效元素的下标int last 1;// 4)调用poll函数监听while (1){int ret poll(fds, last 1, 0);if (ret 0){perror(poll err);return -1;}// 5)判断结构体内文件描述符实际触发的事件if (fds[0].revents POLLIN){// 6)根据不同文件描述符触发的不同事件做对应的逻辑处理fgets(buf, sizeof(buf), stdin);// printf(keybroad:%s\n, buf);send(sockfd, buf, sizeof(buf), 0);if (strcmp(buf, quit\n) 0)break;}if (fds[1].revents POLLIN){recv(sockfd, buf, sizeof(buf), 0);printf(buf:%s\n, buf);}memset(buf, 0, sizeof(buf));}//************************************************************//// 5.关闭套接字closeclose(sockfd);return 0; }
http://www.w-s-a.com/news/853462/

相关文章:

  • 湖滨区建设局网站北京国际建设集团网站
  • 做服装团购有哪些网站wordpress 端口修改
  • 上海礼品定制网站响应式网站模版建站
  • 那种自行提取卡密的网站怎么做网站攻击
  • 洛阳免费网站建设qq是哪家公司开发的软件
  • 怎么做网站网页wordpress网址导航
  • 专业微信网站建设公司首选公司wordpress自动分类插件
  • 网站设计登录界面怎么做网站突然排名没了
  • wordpress 人物页面seo优化公司信
  • 高端网站建设报价网站建设需要硬件设备
  • 做国际物流在哪些网站找客户营销qq怎么申请
  • 网站做推广百度好还是360好科技厅
  • 网站开发工具排名万户网络建一个网站虽要多少钱
  • 用凡科做的网站要钱吗WordPress城市切换
  • 制作一个门户网站需要多少钱营销型网站特征
  • 手机网站 多html中国建设银行网站包头分行
  • 哪个网站做免费广告好招牌图片效果图设计制作
  • 网站建设优化服务机构苏州市做网站
  • 网站如何优化流程企业网站管理系统视频教程
  • 我想克隆个网站 怎么做贵州住房和城乡建设厅官网
  • 网站建设项目前景上海今天新闻综合频道
  • 做网站推销的如何谈客户wordpress怎么做商城
  • 摄影素材库网站服装页面设计的网站
  • 如何用国外网站做头条做个游戏app的费用大概多少
  • 网站 形象入口页福州网站建设网络公司排名
  • 免费下载教学设计的网站送网站建设管理信息内容审核制度
  • 外贸专业网站的公司百度旗下13个app
  • 物理组简介 网站建设高师院校语言类课程体系改革与建设 教学成果奖申报网站
  • 爱网站无法登录怎么回事手表网
  • 网站建设公司现在还挣钱吗山西手动网站建设推荐平台