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

旅游电子商务 网站建设自己怎么搭建网站

旅游电子商务 网站建设,自己怎么搭建网站,买卖网站域名骗局,做外国的独立网站怎么推广文章目录 1.poll系统调用的作用2.poll的原型3.poll支持的事件类型4.poll实现TCP服务器(1)服务器端代码:(2)客户端代码:(3)运行结果截图: 1.poll系统调用的作用 poll 系统调用和 select 类似,也是在指定时间内轮询一定数量的文件描述符,以测试其中是否有…

文章目录

  • 1.poll系统调用的作用
  • 2.poll的原型
  • 3.poll支持的事件类型
  • 4.poll实现TCP服务器
    • (1)服务器端代码:
    • (2)客户端代码:
    • (3)运行结果截图:

1.poll系统调用的作用

poll 系统调用和 select 类似,也是在指定时间内轮询一定数量的文件描述符,以测试其中是否有就绪者。

2.poll的原型

#include <poll.h>
int poll(struct pollfd *fds, nfds_t nfds, int timeout);

poll 系统调用成功返回就绪文件描述符的总数,超时返回 0,失败返回-1
nfds 参数指定被监听事件集合 fds 的大小。
timeout 参数指定 poll 的超时值,单位是毫秒,timeout 为-1 时,poll 调用将永久阻塞,直到某个事件发生,timeout 为 0 时,poll 调用将立即返回。

fds 参数是一个 struct pollfd 结构类型的数组,它指定所有用户感兴趣的文件描述符上发生的可读、可写和异常等事件。pollfd 结构体定义如下:
struct pollfd
{
int fd; // 文件描述符
short events; // 注册的关注事件类型
short revents; // 实际发生的事件类型,由内核填充
};
其中,fd 成员指定文件描述符,events 成员告诉 poll 监听 fd 上的哪些事件类型。
它是一系列事件的按位或,revents 成员则有内核修改,通知应用程序 fd 上实际发生了哪些事件。poll 支持的事件类型如下

3.poll支持的事件类型

在这里插入图片描述

4.poll实现TCP服务器

(1)服务器端代码:

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<pthread.h>
#include<string.h>
#include<arpa/inet.h>
#include<netinet/in.h>
#include<sys/select.h>
#include<sys/socket.h>
#include<poll.h>#define MAXFD 10
int socket_init();
int accept_client(int sockfd);
void fds_init(struct pollfd fds[]);
void fds_add(int fd,struct pollfd fds[]);
void fds_del(int fd,struct pollfd fds[]);
void recv_data(int c,struct pollfd fds[]);
int main()
{int sockfd=socket_init();if(sockfd==-1){exit(0);}struct pollfd fds[MAXFD];fds_init(fds);fds_add(sockfd,fds);//sockfd->fdwhile(1){int  n=poll(fds,MAXFD,5000);if(n==-1){printf("poll error\n");}if(n==0){printf("time out\n");}else{for(int i=0;i<MAXFD;i++){if(fds[i].fd==-1){continue;}if(fds[i].revents & POLLIN){if(fds[i].fd == sockfd){int c=accept_client(sockfd);if(c!=-1){fds_add(c,fds);}}else{recv_data(fds[i].fd,fds);}}}}}}int socket_init()
{int sockfd=socket(AF_INET,SOCK_STREAM,0);if(sockfd==-1){return -1;}struct sockaddr_in saddr;memset(&saddr,0,sizeof(saddr));saddr.sin_family=AF_INET;saddr.sin_port=htons(5678);saddr.sin_addr.s_addr=inet_addr("127.0.0.1");int res=bind(sockfd,(struct sockaddr*)&saddr,sizeof(saddr));if(res==-1){printf("bind error\n");return -1;}res=listen(sockfd,5);if(res==-1){return -1;}return sockfd;
}
int accept_client(int sockfd)
{struct sockaddr_in caddr;int len=sizeof(caddr);int c=accept(sockfd,(struct sockaddr*)&caddr,&len);return c;
}void fds_init(struct pollfd fds[])
{for(int i=0;i<MAXFD;i++){fds[i].fd=-1;fds[i].events=0;fds[i].revents=0;}
}void fds_add(int fd,struct pollfd fds[])
{for(int i=0;i<MAXFD;i++){if(fds[i].fd==-1){fds[i].fd=fd;fds[i].events=POLLIN;fds[i].revents=0;break;}}
}void fds_del(int fd,struct pollfd fds[])
{for(int i=0;i<MAXFD;i++){if(fds[i].fd==fd){fds[i].fd=-1;fds[i].events=0;fds[i].revents=0;break;}}
}void recv_data(int c,struct pollfd fds[])
{char buff[128];int n=recv(c,buff,127,0);if(n<=0){close(c);fds_del(c,fds);printf("client close\n");return ;}printf("recv:%s\n",buff);send(c,"ok",2,0);
}

(2)客户端代码:

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<netinet/in.h>int socket_init();int main()
{int sockfd=socket_init();if(sockfd==-1){exit(0);}while(1){printf("input:");char buff[128]={0}; fgets(buff,127,stdin);if(strncmp(buff,"end",3)==0){break;}send(sockfd,buff,strlen(buff)-1,0);memset(buff,0,128);recv(sockfd,buff,127,0);printf("read:%s\n",buff);}close(sockfd);exit(0);}int socket_init()
{int sockfd=socket(AF_INET,SOCK_STREAM,0);//tcp流式服务if(sockfd==-1){printf("socket errror\n");return -1;}struct sockaddr_in saddr;memset(&saddr,0,sizeof(saddr));saddr.sin_family=AF_INET;saddr.sin_port=htons(5678);saddr.sin_addr.s_addr=inet_addr("127.0.0.1");int res=connect(sockfd,(struct sockaddr*)&saddr,sizeof(saddr));if(res==-1){printf("connect error\n");return -1;}return sockfd;
}

(3)运行结果截图:

在这里插入图片描述

http://www.khdw.cn/news/4715.html

相关文章:

  • 珠宝网站形象设计最常用的网页制作软件
  • 网页设计手机端seo搜索培训
  • 希腊网站后缀网站整站优化
  • 廊坊哪里有做网站建设的站长工具seo综合查询腾讯
  • 手机端网站如何做排名电脑培训学校网站
  • vantage wordpressseo是指什么职位
  • 万网云主机 wordpress人员优化是什么意思
  • 专业微信网站建设公司首选软文有哪些推广渠道
  • 那个网站做的系统最好短链接
  • 做暧暖爱视频1000部在线网站seo网站平台
  • 桂林网站建设兼职万能搜索引擎入口
  • 现在公司做各网站要多少钱搜索最全的搜索引擎
  • 网站建设深圳亿联时代以品牌推广为目的的广告网络平台
  • .asp网站开发seo专业培训技术
  • html5微网站源码sem是什么的缩写
  • 威海做企业网站网络营销策划书案例
  • 大连网络宣传网站视频优化是什么意思
  • 重庆有没有做网站的南城网站优化公司
  • 装修报价单明细表完整 清单点石关键词排名优化软件
  • wordpress网站加密百度一下网页版
  • 临汾做网站网页设计学生作业模板
  • 四川观察疫情最新新闻优化seo方法
  • 网站开发有什么好的命题奶糖 seo 博客
  • 泰安市做网站的公司百度推广有效果吗?
  • 旅游建设投资公司中网站网站做seo教程
  • viewjs wordpress广州优化防控措施
  • 学做视频t的网站视频广告联盟平台
  • wordpress资讯网站模板公司企业网站建设方案
  • 网站建设商业阶段线上推广费用预算
  • 免费行情软件网站大全下载营销软文是什么意思