欢迎来到第一文库网! | 帮助中心 第一文库网-每个人都是第一
第一文库网
全部分类
  • 研究报告>
  • 学术论文>
  • 全科教育>
  • 应用文档>
  • 行业资料>
  • 企业管理>
  • 技术资料>
  • 生活休闲>
  • ImageVerifierCode 换一换
    首页 第一文库网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    计算机网络课程设计报告--基于UDP协议的聊天程序.docx

    • 资源ID:1118560       资源大小:115.43KB        全文页数:13页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    扫码关注公众号登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机网络课程设计报告--基于UDP协议的聊天程序.docx

    计算机网络课程设计报告题目:基于UDP协议的聊天程序一、问题描述本课程设计是是基于UDP协议的网络聊天程序设计,UDP协议是无连接的协议,是TCP/IP协议的一种分层协议。通过本设计进一步掌握利用ViSUa1C+进行程序设计的能力和运用面向对象程序设计的思想和方法,初步掌握开发一个小型实用系统的基本方法,理解Windows程序的运行过程。本设计实现的聊天工具要求在MicrosoftVisua1C+÷6.0±,编写一个程序,采用C/S模式,模拟网络上的聊天软件,实现在局域网上两台主机之间的通信。且经过测试,该聊天程序能够正常运行,实现了设计目标。二、概要设计2. 1设计原理UDP协议的全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OS1模型中,在第四层一一传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。UDP是定义用来在互连网络环境中提供数据报交换的计算机通信的协议。此协议默认是IP下层协议。此协议提供了向另一用户程序发送信息的最简便的协议机制,不需要连接确认和保护复制,所以在软件实现上比较简单,需要的内存空间比起TCP相对较小。UDP包头由4个域组成,其中每个域各占用2个字节。(1)源端口号(16位):UDP数据包的发送方使用的端口号。(2)目标端口号(16位):UDP数据包的接收方使用的端口号。UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和rap协议正是采用这一机制,实现对同一时刻内多项应用同时发送和接收数据的支持。(3)数据报长度(16位)。数据报的长度是指包括报头和数据部分在内的总的字节数。理论上,包含报头在内的数据包的最大长度为65535字节。不过,一些实际应用往往会限制数据包的大小,有时会降低到8192字节。(4)校验值(16位)。UDP协议使用包头中的校验值来保证数据的安全。2.2客户机/服务器模式由于这次课程设计是实现点到点的可靠连接,所以在此使用UDP连接方式。在这个连接中,双方分为客户和服务器,他们各自的功能不同。客户机一方,UDP应用程序功能如下:(1)打开通信信道(申请一套接字),并连接到服务器在主机的保留端口,该端口对应服务器的UDP进程。(2)向服务器发出请求报文,等待接收应答。(3)从服务器方收到最终应答结果,或在不再请求时关闭信道并终止客户机进程。服务器一方,UDP应用程序动作如下:(1)打开通信信道(申请一套接字),通知本地主机在某一保留端口接收客户机请求。(2)等待客户请求到达指定端口。(3)接收到请求,启动一新进程处理用户请求,同时释放旧进程以响应新的客户请求,一旦服务完成,关闭新进程与客户的通信。(4)继续等待客户机请求。(5)如果不想响应客户机请求,关闭服务器进程2.2系统流程图三、详细设计3. 1设计思路基于UDP协议通信和基于TCP协议的通信不同,基于UDP的消息传递更快,但不提供可靠性的保证。也就是说,数据在传递的时候,用户无法知道数据能否正确的到达目的地主机,也不能确定数据到达目的地的顺寻是否和发送的顺序相同。系统采用的是客户端/服务器工作模式,所以应有客户端和服务器两个类,其中客户端向服务器请求服务。而基于UDP通信的基本模式是:将数据打包,称为数据包,然后将数据包发往目的地。接受别人发来的数据包,然后查看数据包的内容。3. 2基于UDP的聊天程序服务器端源程序:创建套接字,因为是基于UDP的,所以用SOCK_DGRAM.SOCKETSockSrv=SOCket(AF_INET,SOCK_DGRAM,O);对于服务器端,接着应该进行绑定SOCKADDR_INaddrSrv;定义一个地址结构体的变量addrSrv.sin_addr.Sun.Saddr=hton1(INADDRANY);addrSrv.Sin_fami1y二AFNET;地址族addrSrv.Sin_POrt=htons(6000);端口号bind(sockSrv,(SOCKADDR*)feaddrSrv,Sizeof(SOCKADDR);charrecvBuf100;字符数组,用来接收信息charSendBUf100;用来发送信息chartempBuf200;用来存放中间数据SOCKADDR_INaddrC1ient;定义一个地址结构体的变量,在通讯的时候,我们需要获取和我们通讯的这一方的地址信息,这一获取是我们通过调用recvfrom来获得的,但是我们需要提供一个地址结构体的变量intIen=Sizeof(SOCKADDR);WhiIe循环,保证通讯过程能够不断的循环下去whi1e(1)(接收数据recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)feaddrC1ient,&1en);判断是否结束对话,q表示结束if(,q,=recvBuf0)Sendto(SoCkSrV,q,Str1en("q")+1,0,(SOCKADDR*)feaddrC1ient,1en);PrintfCCharend!nz,);break;)将数据格式化到tempBuf中sprintf(tempBuf,z%ssay:%s,z,inet_ntoa(addrC1ient.sin_addr),recvBuf);/addrC1ient.sin_addr表示对方的IP地址,ine"ntoa将IP转换为点分十进制表示的形式,如172.0.0.1将输出信息设置成绿色Setconso1eTextAttribute(GetStdHand1e(STD_OUTPUT_HAND1E),FOREGROUND_INTENSITYIFoREGROUND_GREEN);printf(,%sn",tempBuf);将数据打印输出将字体颜色选回默认Setconso1eTextAttribute(GetStdHand1e(STD_OUTPUT_HAND1E),FOREGROUND_INTENSITYIFoREGROUND_REDFOREGROUND_GREENFOREGROUND_B1UE);printf(,zP1easeinputdata:n,z);Setconso1eTextAttribute(GetStdIIand1e(STD_OUTPUT_HAND1E),FOREGROUND_INTENSITYIFOREGROUND_GREEN);gets(sendBuf);从键盘输入数据sendto(sockSrv,sendBuf,str1en(sendBuf)+1,0,(SOCKADDR*)feaddrC1ient,1en);/发送数据)当循环结束的时候,关闭套接字c1osesocket(sockSrv);终止对套接字的使用WSAC1eanupO;3. 3基于UDP的聊天程序客户端端源程序:创建套接字SOCKETSockC1ient=Socket(AF_INET,SoCK_DGRAM,0);基于UDP的客户端来说,它不需要去绑定,但是要设置信息将要发送到对方机器的地址信息,也就是服务器端的地址信息SOCKADDR_INaddrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr(,7127.O.O.1);addrSrv.Sin_fami1y=AF_INET;地址族addrSrv.sinport=htons(6000);接收端口号charrecvBuf100;接收数据charSendBUf100;发送数据chartempBuf200;临时数据存储intIen=Sizeof(SOCKADDR);用于返回接收数据的地址结构的长度,必须先经过初始化whi1e(1)(printf(,p1easeinputdata:n,z);Setconso1eTextAttribute(GetStdIIand1e(STD_OUTPUT_HAND1E),FOREGROUND_INTENSITYIFOREGROUND_REDFOREGROUND_GREEN);gets(sendBuf);sendto(sockC1ient,sendBuf,Str1en(sendBuf)+1,0,(SOCKADDR*)&addrSrv,Ien);发送数据recvfrom(sockC1ient,recvBuf,100,0,(SOCKADDR*)&addrSrv,&1en);接收数据判断是否结束对话if(,q,=recvBuf0)(sendto(sockC1ient,zqz,Str1en(q)+1,0,(SOCKADDR*)&addrSrv,1en);printf(,zChatend!n");break;)将接收到的数据格式化到tempBuf中sprintf(tempBuf,z%ssay:%s,z,inet_ntoa(addrSrv.sin_addr),recvBuf);将字体设置为黄色Setconso1eTextAttribute(GetStdIIand1e(STD_OUTPUT_HAND1E),FOREGROUND_INTENSITYIFOREGROUND_REDFOREGROUND_GREEN);printf(,z%s,z,tempBuf);将字体选回默认Setconso1eTextAttribute(GetStdHand1e(STD_OUTPUT_HAND1E),FOREGROUND_INTENSITYIFOREGROUND_REDFOREGROUND_GREENFOREGROUND_B1UE);)关闭套接字c1osesocket(sockC1ient);终止对套接字库的使用WSAC1eanup();)四、调试分析4. 1测试中遇到的问题(1)刚开始不知道必须先运行客户端程序,一直出错,后来经过反复思考以及调试才得以改正;(2)4. 2测试结果打开客户端打开服务器r田同EC:UsersAdministratorDesktopNetSrvNetC1ientDebugNetC1ientexep1easeinputdata:he11oo113C:UsersAdministratorDesktopNetSrvDebugNetSrv.e×e127.0.0.1say:heI1oP1easeinputdata:服务器收到消息M3C:UsersAdministratorDesktopNetSrvDebugNetSrv.exea27.0.0.1say:he11oP1easeinputdata:3C:UsersAdministratoOesktopNetSrvNetC1ientDebugNetC1ient.exep1easeinputd

    注意事项

    本文(计算机网络课程设计报告--基于UDP协议的聊天程序.docx)为本站会员(lao****ou)主动上传,第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第一文库网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 001doc.com网站版权所有   

    经营许可证编号:宁ICP备2022001085号

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



    收起
    展开