资源描述
学号 09730127网络工程课程设计设计说明书基于C/S的简单通信通信协议)起止日期:2012年7月2日至2012年7月13日学生姓名班级09网络1成绩指导教师(签字)计算机与信息工程学院2012年7月13日天津城市建设学院课程设计任务书2011 2012 学年第 二 学期 电子与信息工程 系 网络工程 专业 一 班级课程设计名称: 网络工程课程设计 设计题目: 基于C/S的简单通信通信协议 完成期限:自 2012 年 7 月 2 日至 2012 年 7 月 13 日共 2 周设计依据、要求及主要内容:一、 设计目的了解网络协议工作原理,并使用编程实现。二、设计要求 在本课程设计过程中要求学生:(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务。(3)学生在接受设计任务后,根据要求认真完成。(4)认真编写课程设计报告。三、设计内容写一个软件,并用此软件实现某个网络传输协议的功能指导教师(签字): 教研室主任(签字): 批准日期: 年 月 日摘 要本次课程设计完成一个简单的通信协议,使用C+语言在基于对C/S模式了解的基础上,并利用Socket套接字完成这个协议。目录第1章 程序定义1第2章 需求分析1第3章 程序设计13.1 开发环境及工具13.2结构设计13.2.1 Client客户端13.2.2服务器端23.3详细设计33.3.1系统数据结构3第4章 实验结果6第5章 实验心得7参考文献7第1章 程序定义本程序采用TCP/IP协议的套接字功能完成,并在C/S模式的基础上建立的,拥有一个Server客户端以及Client客户端,并能够实现两个客户端的相互通信。第2章 需求分析Socket通常也称作套接字,用于描述IP地址、端口和传输协议,是一个通信链的句柄。IP地址是每个主机的网络地址,是唯一的,同时程序端口号是应用软件运行的编号,而传输协议是通信过程中所采用的传输协议,所以每个Socket套接字是每个程序特定的编号。Server建立的时候在监听整个网络环境,当以相同Socket套接字进行建立连接请求的时候才会接受这种连接请求。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。本程序是一个聊天程序,为了能过进行简单的通信过程。第3章 程序设计3.1 开发环境及工具l 开发工具Microsoft Visual C+ 6.0l 开发语言C+3.2结构设计3.2.1 Client客户端3.2.2服务器端3.3详细设计3.3.1系统数据结构Client客户端程序:#include #include #pragma comment(lib,ws2_32.lib)void main()WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );/请求1.1版本的winsock库err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) return;if ( LOBYTE( wsaData.wVersion ) != 1 | HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup( );return; SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr(127.0.0.1);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);char recvBuf100;char sendBuf100;char tempBuf200; int len=sizeof(SOCKADDR);while(1)printf(请输入消息:n);gets(sendBuf);sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrSrv,len);recvfrom(sockClient,recvBuf,100,0,(SOCKADDR*)&addrSrv,&len);sprintf(tempBuf,%s 说: %s,inet_ntoa(addrSrv.sin_addr),recvBuf);printf(%sn,tempBuf);closesocket(sockClient);WSACleanup();while(1);Server客户端程序:#include #include #pragma comment(lib,ws2_32.lib)void main()WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );/请求1.1版本的winsock库err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) return;if ( LOBYTE( wsaData.wVersion ) != 1 | HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup( );return; /加载完套接字的库后,创建套接字 SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);/将套接字绑定到地址SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR); char recvBuf100;char sendBuf100;char tempBuf200;SOCKADDR_IN addrClient;/获取通讯方的地址信息int len=sizeof(SOCKADDR);while(1)recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);sprintf(tempBuf,%s 说: %s,inet_ntoa(addrClient.sin_addr),recvBuf);printf(%sn,tempBuf);printf(请输入消息:n);gets(sendBuf);/获取一行数据,回车结束 sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrClient,len);closesocket(sockSrv);WSACleanup();while(1);第4章 实验结果 Server客户端Client客户端第5章 实验心得通过此次的实验,让我对于Socket网络聊天类的使用有了更深入的了解,在关于网络编程的方面也有了新的认识。虽然此程序的功能还比较的简单,而且某些方面还没能完善,但是,我相信我只是一个开始。课程设计是每一个大学生在大学生涯中都不可或缺的,它使我们在实践中了 巩固了所学的知识、在实践中锻炼自己的动手能力;实习又是对每一位大学生所 学专业知识的一种拓展手段, 它让我们学到了很多在课堂上根本就学不到的知识, 不仅开阔了自己的视野,增战了自己的见识,也为我们以后进一步走向社会打下 了坚实的基础,是我们走向以后走向工作岗位的奠基石。参考文献1谢希仁.计算机网络第4版.电子工业出版社.20032赵永发,由大伟, Visual C+开发宝典 .20023周明天,汪文勇.TCP/IP网络原理与技术.清华大学出版社.19936
展开阅读全文