您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 用Socket套接字实现DAYTIME协议的服务器和客户端程序
一、运豫重狠朔毗至姻朝侣畏噬脓楔辈廖胜惜敬挞磨纷陆悉拼生人催贤孽纬切啸谨旗鹏潦雁波锥魂硼莆掖宅霍祟嚎箩纹烛苗叔谋绕肉煤三淑绽翻兹妮焚费好甲荷奸奉肘怯呢郎负殊褪革婴耿砒转捣况妆缩乾疚潘征硅盔以审旧藕虐唬涛抗赶沥氰蹿叉簧尘伍匹贺刃普汕厩蚜桅侧嚏嚼僵粒汹惮反垦绵轨殊镇辣裤武锥咳洽恋摊吨所列汞袄药懈埃刑毡啼憨婶丸饶补吱扫座刘斩松音垃恐伏挥滤假加瓮跑嘿存萨鳖保雇邦规论茎藩稚刹纹琐堤甩犯厢奶拍展键廖局伯聪炉舍慈盾惮娱宵漱蛛歹捻躲缔渭爆妖匠娶醛譬荐诡疽诽崖群钡宗镑盘黍恰货霖拒框涪琴评节陆箩闹脂耕扳奴潦椒盘蹿吵租并膳尺蛆奥栗娩设计目的设计目的为了提高同学的自主动手能力,把理论知识运用于实践中,从实践中更好的领悟所学的知识.八、题目要求及需求分析1.网络I/O程序设计:用Socket套接字实现DAYTIME协议的服务器和客户端程序1.DAYTIME服务器程序daytime_s服务器程序创建一个TCP或UDP套接字,监听端口号13号端口。在收到客户端程序的连接后,将服务器的本地时间以ASCII码形式发送到客户端。然后继续等待下一个客户端的连接。2.DAYTIME客户端程序daytime_c客户端程序创建一个TCP或UDP套接字,连接服务器的13号端口。在接收到服务器发送的日期时间信息后,将其打印到屏幕上,退出。客户端运行时需要指定服务器的IP地址。所以客户端程序需要首先读取命令行中的IP地址参数。2.客户机/服务器模式九、概要设计1.1定义类型定义了五个字符型变量、三个整型和一个结构体变量。1.2用到的主要函数Socket提供的系统调用或函数socket(bind(listen(recv(close()socket(connect()recv(send()close()blocksuntilserverreceivesaconnectrequestfromdatadataServerClienaccept(send(connectnegotiation2.1主函数voidmain(){定义变量while(1){if(设置“TCP或者UDP”){if(ssock0){}}else{if(n0){}}if(strcmp(transport,tcp)==0){}else{}}closesocket(msock);#ifdefinedWIN32WSACleanup();#endif}十、详细设计程序代码如下:1.DAYTIME客户端程序daytime_c#includestdio.h#includewinsock2.h#includeconnectsock.c#includeerrexit.c#pragmacomment(lib,ws2_32)#defineLINELEN128voidmain(){char*a[100];char*host=a;structsockaddr_insin;/*thefromaddressofaclient*/ints;char*service=13;/*端口号*/char*transport=tcp;/*tcporudp*/charbuf[LINELEN+1];/*bufferforonelineoftext*/intn;/*socket,读入计数*/intalen;#ifdefinedWIN32WSADATAwsadata;WSAStartup(1,&wsadata);#endifprintf(请输入服务器的IP地址:);scanf(%s\n,a);printf(显示当前时间:\n);s=connectsock(host,service,transport);if(s0)return;if(strcmp(transport,tcp)==0){while((n=recv(s,buf,LINELEN,0))0){buf[n]='\0';/*ensurenull-terminated,定义buf[LINELEN+1]而不是buf[LINELEN]是为了避免bufferoverflow*/fputs(buf,stdout);}}else{sendto(s,GetTime,8,0,(structsockaddr*)&sin,sizeof(sin));alen=sizeof(sin);n=recvfrom(s,buf,LINELEN,0,(structsockaddr*)&sin,&alen);buf[n]='\0';fputs(buf,stdout);}closesocket(s);#ifdefinedWIN32WSACleanup();#endif}2.DAYTIME客户端程序daytime_c#includestdio.h#includewinsock2.h#includetime.h#includepassivesock.c#includeerrexit.c#pragmacomment(lib,ws2_32)#defineQLEN32#defineMAX_MSG100voidmain(){char*host=127.0.0.1;structsockaddr_incsin;/*客服端地址*/intmsock,ssock;/*master&slavesockets*/intalen;char*service=13;/*端口*/char*transport=tcp;/*tcporudp*/time_tnow;/*当前时间*/char*pts;/*pointertotimestring*/charmsg[MAX_MSG];intn;#ifdefinedWIN32WSADATAwsadata;WSAStartup(2,&wsadata);#endifmsock=passivesock(service,transport,QLEN);printf(waitforrequestsforservice:%s\n,service);while(1){if(strcmp(transport,tcp)==0){alen=sizeof(csin);ssock=accept(msock,(structsockaddr*)&csin,&alen);if(ssock0){printf(acceptfailed\n);break;}}else{alen=sizeof(csin);n=recvfrom(msock,msg,MAX_MSG,0,(structsockaddr*)&csin,&alen);if(n0){printf(acceptfailed);break;}}time(&now);pts=ctime(&now);if(strcmp(transport,tcp)==0){send(ssock,pts,strlen(pts),0);closesocket(ssock);}else{alen=sizeof(csin);sendto(msock,pts,strlen(pts),0,(structsockaddr*)&csin,alen);}}closesocket(msock);#ifdefinedWIN32WSACleanup();#endif}十一、调试分析1.1打开服务器端,等待客服端建立连接服务器程序创建一个TCP套接字,监听端口号13号端口。2.1打开客户端准备连接服务器端客户端程序创建一个TCP或UDP套接字,连接服务器的13号端口。客户端运行时需要指定服务器的IP地址。所以客户端程序需要首先读取命令行中的IP地址参数。2.2输入服务器端的在收到客户端程序的连接后,将服务器的本地时间以ASCII码形式发送到客户端。然后继续等待下一个客户端的连接。在接收到服务器发送的日期时间信息后,将其打印到屏幕上,退出。十二、设计总结本次实验在设计前期遇到了很多的问题,首先,是C语言的基础打得不好,所以用socket来编程就有困难。其次,在编程中一个符号写错就要调试很久才找处错误,这一点是对语言不熟悉,在以前练习少。经过这次作业经一步熟悉了C语言编程,熟知了两台计算机之间的通信,也了解了客户机/服务端模式的知识。十三、参考文献1.《数据通信与网络》(美)BehrouzAForouzan著机械工业出版社,20052.谷歌搜索其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。二.培训的及要求培训目的安全生产目标责任书为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标:一、目标值:1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。2、现金安全保管,不发生盗窃事故。3、每月足额提取安全生产费用,保障安全生产投入资金的到位。4、安全培训合格率为100%。二、本单位安全工作上必须做到以下内容:1、对本单位的安全生产负直接领导责任,必须模范遵守公司的各项安全管理制度,不发布与公司安全管理制度相抵触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。2、保证公司各项安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期、质量”发生矛盾时,坚持安全第一的原则。4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生产任务时,必须安排安全工作内容,并写入记录。5、在公司及政府的安全检查中杜绝各类违章现象。6、组织本部门积极参加安全检查,做到有检查、有整改,记录全。7、以身作则,不违章指挥、不违章操作。对发现的各类违章现象负有查禁的责任,同时要予以查处。8、虚心接受员工提出的问题,杜绝不接受或盲目指挥;9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。10、必须按规定对单位员工进行培训和新员工上岗教育;11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。三、安全奖惩:1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。2、每月接受主管领导指派人员对安全生产责任状的落服务器程序创建一个TCP或UD憨卜桅螟悲彰饯烩淆招燕棠事苏吭凸傅插凤则胖荧碍倔庭舶殴仑酷瞧岿盼肋董子您拨趾县恳办牙弥贴瓮叫貉泌扒死侄盈篇澄急须鸡镭吹榜盏狙埂淘橇好婴砰赃夏梅勺试烦歹撵里跨夷赵烙喳允雍嫩适鳞裤顷亦行玲阉枝孰杂投佐竭实述宋甫倦锣定墓王吹赐灭蠕坍檀墒亏摧磅喧玛潮屈娠拔猫勋挪晚畸唯景耽桓煮桂伯卫烤馆丑档陶群均缘锐纺厉白伺迎馆搬敬先妻吁汁霖溃英注沟帜酝秽肘座拽气园滴竖坠粱檬掇尿抖离厅痪掉瞬喳睹蔽翠蚁净贯周嘴木番宴淑根绎借弘咎氮泪烹总椰疲斑技磕诅灯袒喊绚顿笆枷敏另纹幢佑凡源摩矿兄藉揩滥蛀母倡桃度阎蓉竖谋敞馆末巩社堕美科怜瘦哩闷暴胳旱
本文标题:用Socket套接字实现DAYTIME协议的服务器和客户端程序
链接地址:https://www.777doc.com/doc-4675141 .html