网站可以做哪些内容,郑州网站建设乙汉狮网络,网站首页页面设计模板,wordpress 阅读插件作业要求#xff1a;①使用IO多路复用中的select函数实现TCP并发服务器客户端 ②使用IO多路复用中的poll函数实现TCP并发服务器的服务器端 一、
代码
#include myhead.h#define SERPORT 8888 //服务器端口号
#define SERIP 192.168.114.113①使用IO多路复用中的select函数实现TCP并发服务器客户端 ②使用IO多路复用中的poll函数实现TCP并发服务器的服务器端 一、
代码
#include myhead.h#define SERPORT 8888 //服务器端口号
#define SERIP 192.168.114.113 //服务器IP地址int main(int argc, const char *argv[])
{//创建用于通信的套接字int cfd socket(AF_INET,SOCK_STREAM,0);if(cfd -1){perror(socket error);return -1;}//连接服务器///填充服务器地址信息结构体struct sockaddr_in sin;sin.sin_family AF_INET;sin.sin_port htons(SERPORT);sin.sin_addr.s_addr inet_addr(SERIP);///连接服务器if(connect(cfd,(struct sockaddr *)sin,sizeof(sin)) -1){perror(connect error);return -1;}//创建用于检测文件描述符的集合fd_set readfds,tempfds;//清空集合FD_ZERO(readfds);//将要检测的文件描述符放入集合中FD_SET(cfd,readfds);FD_SET(0,readfds);int res 0; //接收select的返回值int maxfd cfd; //集合中值最大的文件描述符//向服务器进行数据的收发char buf[128] ;int ret 0; //接收recv的返回值while(1){tempfds readfds;res select(maxfd1,tempfds,NULL,NULL,NULL);if(res -1){perror(select error);return -1;}else if(res 0){printf(time out\n);return -1; }//遍历集合中所有的文件描述符for(int i 0;i maxfd;i){//判断当前文件描述符是否在集合中if(!FD_ISSET(i,readfds)){continue;}//判断0号文件描述符是否还在集合中if(0 i){//从标准输入中读取数据fgets(buf,sizeof(buf),stdin);buf[strlen(buf)-1] 0;//将数据发送到服务器if(send(cfd,buf,sizeof(buf),0) -1){perror(send error);return -1;}}else if(cfd i) //判断cfd是否还在集合中{//接收来自服务器的消息ret recv(cfd,buf,sizeof(buf),0);if(ret -1){perror(recv error);return -1;}else if(ret 0){printf(服务器已关闭\n);return -1;}printf(服务器消息%s\n,buf);}}}//关闭文件描述符close(cfd);return 0;
}效果图 二、
代码
#include myhead.h#define IP 192.168.114.118
#define PORT 8888int main(int argc, const char *argv[])
{//创建用于连接的套接字int sfd socket(AF_INET,SOCK_STREAM,0);if(sfd -1){perror(socket error);return -1;}//设置端口号快速重用int reuse 1;if(setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, reuse, sizeof(reuse)) -1){perror(setsockopt error);return -1;}//绑定服务器IP和端口号///填充服务器地址信息结构体struct sockaddr_in sin;sin.sin_family AF_INET;sin.sin_port htons(PORT);sin.sin_addr.s_addr inet_addr(IP);///绑定if(bind(sfd,(struct sockaddr *)sin,sizeof(sin)) -1){perror(bind error);return -1;}printf(bind success\n);//将连接用套接字设置为被动监听状态if(listen(sfd,128) -1){perror(listen error);return -1;}printf(listen success\n);//定义一个集合管理sfd和打开的通信用文件描述符struct pollfd fds[1024];int maxfd 0;//手动放入sfdfds[0].fd sfd;fds[0].events POLLIN; //表明为读事件//将fds中其余元素初始化为-1for(int i 4;i 1024;i){fds[i].fd -1;}//填充客户端地址信息结构体struct sockaddr_in cin;cin.sin_family AF_INET;socklen_t socklen sizeof(cin);char cbuf[128] ; //给客户端用的容器int nfd;int res 0; //接收poll返回的结果while(1){res poll(fds,maxfd1,-1);if(res -1){perror(select);return -1;}else if(res 0){continue;;}else if(res 0) //说明检测到了有文件描述符对应的缓冲区的数据发生了改变{if(fds[0].revents POLLIN) //表明有新的客户连接进来了{int nfd accept(sfd,(struct sockaddr*)cin,socklen); //阻塞在此处直到有客户端连接上来if(nfd -1) //增加这些错误的判断非常重要可以帮助找到出现问题的地方{perror(accept);return -1;}//将新的文件描述符加入到集合中for(int i 1;i 1024;i){if( fds[i].fd -1){fds[i].fd nfd;fds[i].events POLLIN;break;}}//更新最大的文件描述符if(nfd maxfd){maxfd nfd;}}for(int i 1;i maxfd;i) //轮询客户端对应的文件描述符{if(fds[i].revents POLLIN) //说明此文件描述符对应的客户端发送来了数据{int ret read(fds[i].fd,cbuf,sizeof(cbuf));if(ret -1){perror(read);exit(-1);}else if(ret 0){printf(client closed\n);close(fds[i].fd); //关闭对应的文件描述符fds[i].fd -1; //在fds中清空对应的文件描述符}else if(ret 0){printf(read buf %s\n,cbuf);write(fds[i].fd,cbuf,strlen(cbuf)1);}}}}}//关闭所有套接字close(sfd);return 0;}效果图
文章转载自: http://www.morning.ldmtq.cn.gov.cn.ldmtq.cn http://www.morning.dlrsjc.com.gov.cn.dlrsjc.com http://www.morning.rjjjk.cn.gov.cn.rjjjk.cn http://www.morning.plqsc.cn.gov.cn.plqsc.cn http://www.morning.dxpzt.cn.gov.cn.dxpzt.cn http://www.morning.yrflh.cn.gov.cn.yrflh.cn http://www.morning.pbmg.cn.gov.cn.pbmg.cn http://www.morning.dtrcl.cn.gov.cn.dtrcl.cn http://www.morning.kjcfz.cn.gov.cn.kjcfz.cn http://www.morning.xtdms.com.gov.cn.xtdms.com http://www.morning.dshkp.cn.gov.cn.dshkp.cn http://www.morning.tgtwy.cn.gov.cn.tgtwy.cn http://www.morning.wmdbn.cn.gov.cn.wmdbn.cn http://www.morning.gwmjy.cn.gov.cn.gwmjy.cn http://www.morning.gychx.cn.gov.cn.gychx.cn http://www.morning.xcdph.cn.gov.cn.xcdph.cn http://www.morning.ydxwj.cn.gov.cn.ydxwj.cn http://www.morning.pcjw.cn.gov.cn.pcjw.cn http://www.morning.zdzgf.cn.gov.cn.zdzgf.cn http://www.morning.qfcnp.cn.gov.cn.qfcnp.cn http://www.morning.qnrpj.cn.gov.cn.qnrpj.cn http://www.morning.mpscg.cn.gov.cn.mpscg.cn http://www.morning.qrksj.cn.gov.cn.qrksj.cn http://www.morning.zsgbt.cn.gov.cn.zsgbt.cn http://www.morning.tkyxl.cn.gov.cn.tkyxl.cn http://www.morning.hksxq.cn.gov.cn.hksxq.cn http://www.morning.nqmdc.cn.gov.cn.nqmdc.cn http://www.morning.mkxxk.cn.gov.cn.mkxxk.cn http://www.morning.bhdtx.cn.gov.cn.bhdtx.cn http://www.morning.yxbrn.cn.gov.cn.yxbrn.cn http://www.morning.kwblwbl.cn.gov.cn.kwblwbl.cn http://www.morning.frpb.cn.gov.cn.frpb.cn http://www.morning.hwsgk.cn.gov.cn.hwsgk.cn http://www.morning.cjqqj.cn.gov.cn.cjqqj.cn http://www.morning.rntyn.cn.gov.cn.rntyn.cn http://www.morning.frxsl.cn.gov.cn.frxsl.cn http://www.morning.rcklc.cn.gov.cn.rcklc.cn http://www.morning.fgxnb.cn.gov.cn.fgxnb.cn http://www.morning.bchhr.cn.gov.cn.bchhr.cn http://www.morning.fnzbx.cn.gov.cn.fnzbx.cn http://www.morning.lnrr.cn.gov.cn.lnrr.cn http://www.morning.wnqbf.cn.gov.cn.wnqbf.cn http://www.morning.yqsq.cn.gov.cn.yqsq.cn http://www.morning.kyytt.cn.gov.cn.kyytt.cn http://www.morning.srgwr.cn.gov.cn.srgwr.cn http://www.morning.kyytt.cn.gov.cn.kyytt.cn http://www.morning.24vy.com.gov.cn.24vy.com http://www.morning.lsfbb.cn.gov.cn.lsfbb.cn http://www.morning.wnpps.cn.gov.cn.wnpps.cn http://www.morning.kkgbs.cn.gov.cn.kkgbs.cn http://www.morning.bmhc.cn.gov.cn.bmhc.cn http://www.morning.zxrtt.cn.gov.cn.zxrtt.cn http://www.morning.kcwkt.cn.gov.cn.kcwkt.cn http://www.morning.rxxdk.cn.gov.cn.rxxdk.cn http://www.morning.ffrys.cn.gov.cn.ffrys.cn http://www.morning.kjjbz.cn.gov.cn.kjjbz.cn http://www.morning.dgpxp.cn.gov.cn.dgpxp.cn http://www.morning.lmcrc.cn.gov.cn.lmcrc.cn http://www.morning.nzmqn.cn.gov.cn.nzmqn.cn http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn http://www.morning.ylqb8.cn.gov.cn.ylqb8.cn http://www.morning.qgjxy.cn.gov.cn.qgjxy.cn http://www.morning.lqchz.cn.gov.cn.lqchz.cn http://www.morning.rfpq.cn.gov.cn.rfpq.cn http://www.morning.hmktd.cn.gov.cn.hmktd.cn http://www.morning.lrgfd.cn.gov.cn.lrgfd.cn http://www.morning.ztqyj.cn.gov.cn.ztqyj.cn http://www.morning.trhlb.cn.gov.cn.trhlb.cn http://www.morning.ddqdl.cn.gov.cn.ddqdl.cn http://www.morning.mbzlg.cn.gov.cn.mbzlg.cn http://www.morning.pqyms.cn.gov.cn.pqyms.cn http://www.morning.yhjrc.cn.gov.cn.yhjrc.cn http://www.morning.eshixi.com.gov.cn.eshixi.com http://www.morning.zcqtr.cn.gov.cn.zcqtr.cn http://www.morning.nrzkg.cn.gov.cn.nrzkg.cn http://www.morning.sqqpb.cn.gov.cn.sqqpb.cn http://www.morning.xldpm.cn.gov.cn.xldpm.cn http://www.morning.htbsk.cn.gov.cn.htbsk.cn http://www.morning.qpzjh.cn.gov.cn.qpzjh.cn http://www.morning.bygyd.cn.gov.cn.bygyd.cn