版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子科技大学网络编程作业(IO复用)4.网络编程作业4作业要求:服务器利用I/O复用技术,实现同时向多个客户供给服务。要求:服务器:接收客户连接央求,并打印客户IP地址及端口号,尔后接收客户发来的字符串,并打印该字符串和其来自与哪个客户。同时向客户返回该字符串。当某一客户断开连接时,要求服务器打印该客户输入的全部字符。客户:从命令行接收伏务器地址,并向服务器倡议连接央求,连接成功后,从标准输入接收字符串并发送给服务器,等待服务器响应并打印接收的信息。程序:服务器端:#include#include#include#include#include#include#include#include#
2、include专业.专注.电子科技大学网络编程作业(IO复用)4.#definePORT9999#defineBACKLOG5#defineMAXDATASIZE1000typedefstructCLIENTintfd;char*name;structsockaddr_inaddr;char*data;CLIENT;voidprocess_cli(structCLIENT*client,char*recvbuf,intlen);voidsavedata(char*recvbuf,intlen,char*data);intmain(void)inti,maxi,maxfd,sockfd;intn
3、ready;ssize_tn;fd_setrset,allset;intlistenfd,connectfd;structsockaddr_inserver;structCLIENTclientFD_SETSIZE;charrecvbufMAXDATASIZE;intsin_size;专业.专注.电子科技大学网络编程作业(IO复用)4.if(listenfd=socket(AF_INET,SOCK_STREAM,0)=-1)perror(Createsocketfailed.);exit(-1);intopt=SO_REUSEADDR;setsockopt(listenfd,SOL_SOCKE
4、T,SO_REUSEADDR,&opt,sizeof(opt);bzero(&server,sizeof(server);server.sin_family=AF_INET;server.sin_port=htons(PORT);server.sin_addr.s_addr=htonl(INADDR_ANY);if(bind(listenfd,(structsockaddr*)&server,sizeof(structsockaddr)=-1)perror(Binderror.);exit(-1);if(listen(listenfd,BACKLOG)=-1)perror(listenerro
5、r.);专业.专注.电子科技大学网络编程作业(IO复用)4.exit(-1);sin_size=sizeof(structsockaddr_in);maxfd=listenfd;maxi=-1;for(i=0;iFD_SETSIZE;i+)clienti.fd=-1;FD_ZERO(&allset);FD_SET(listenfd,&allset);while(1)structsockaddr_inaddr;rset=allset;nready=select(maxfd+1,&rset,NULL,NULL,NULL);if(FD_ISSET(listenfd,&rset)if(connectf
6、d=accept(listenfd,(structsockaddr*)&addr,&sin_size)=-1)perror(accepterror.);continue;for(i=0;iFD_SETSIZE;i+)if(clienti.fdmaxfd)maxfd=connectfd;if(imaxi)maxi=i;专业.专注.电子科技大学网络编程作业(IO复用)4.if(-nready=0)continue;for(i=0;i=maxi;i+)if(sockfd=clienti.fd)0)continue;if(FD_ISSET(sockfd,&rset)if(n=recv(sockfd,r
7、ecvbuf,MAXDATASIZE,0)=0)close(sockfd);printf(Client(%s)closedconnection.Userdata:%sn,,clienti.data);FD_CLR(sockfd,&allset);clienti.fd=-1;free();free(clienti.data);elseprocess_cli(&clienti,recvbuf,n);if(-nreadyname)=0)memcpy(client-name,recvbuf,len);printf(Clientsnameis%s.n,cl
8、ient-name);return;printf(Receivedclient(%s)message:%sn,client-name,recvbuf);savedata(recvbuf,len,client-data);for(i1=0;i1fd,sendbuf,strlen(sendbuf),0);voidsavedata(char*recvbuf,intlen,char*data)专业.专注.电子科技大学网络编程作业(IO复用)4.intstart=strlen(data);inti;for(i=0;ilen;i+)datastart+i=recvbufi;客户端:#include#inc
9、lude#include#include#include#include#include#definePORT9999#defineMAXDATASIZE100intmain(intargc,char*argv)intfd,numbytes;charbufMAXDATASIZE;structhostent*he;专业.专注.电子科技大学网络编程作业(IO复用)4.structsockaddr_inserver;inti=1;if(argc!=2)printf(Usage:%sn,argv0);exit(-1);if(he=gethostbyname(argv1)=NULL)perror(get
10、hostbynameerror.);exit(-1);if(fd=socket(AF_INET,SOCK_STREAM,0)=-1)perror(Createsocketfailed.);exit(1);bzero(&server,sizeof(server);server.sin_family=AF_INET;专业.专注.电子科技大学网络编程作业(IO复用)4.server.sin_port=htons(PORT);server.sin_addr=*(structin_addr*)he-h_addr);if(i=connect(fd,(structsockaddr*)&server,size
11、of(structsockaddr)=-1)perror(connectfailed.);exit(1);if(numbytes=recv(fd,buf,MAXDATASIZE,0)=-1)perror(recverror.);exit(1);bufnumbytes=0;printf(ServerMessage:%s,buf);printf(Pleaseinputyourname:);scanf(%s,buf);if(numbytes=send(fd,buf,strlen(buf),0)=-1)perror(senderror.);专业.专注.电子科技大学网络编程作业(IO复用)4.exit(1);while(1)printf(Pleaseinputmessage(maxchar:%d):,MAXDATASIZE);scanf(%s,buf);if(strlen(buf)1)i=0;if(numbytes=send(fd,buf,strlen(buf),0)=-1)perror(senderror
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 技术部员工奖惩制度
- 《函数的单调性》教学课件第一课时
- 工业机械:安全生产指南
- 干部履历表填写范本(中共中央组织部1999年)
- 汕尾市重点中学2025届初三第二次教学质量监测(数学试题文)试题含解析
- 森林世界应知应会测试试题及答案
- 陕西省西安市西北工大附中2025届初三阶段性测试(四)数学试题试卷含解析
- 目标管理法在建筑工程质量管理过程中的应用
- (1-3单元)月考试卷(试题)-2024-2025学年人教版数学六年级上册
- 河南省商丘市2023-2024学年八年级上学期11月期中考试英语试题
- 六年级数学上册课件-《百分数的认识》青岛版 (共19张ppt)
- 气管插管患者护理常规课件
- 中国烷基苯行业产销率为94.62%-对外依存度仍较大图
- 精选宋式、清式一苏州地区古建筑常用名词对照
- 口腔专科护理知识考核试题与答案
- 2022年《国民经济行业分类》
- 测量设备、人员配置方案
- (完整版)《地图学》课件
- 三年一体化教学规划及行动策略课件
- 干燥设备选型设计主要参数介绍
- 中医基础——颈椎病ppt课件
评论
0/150
提交评论