【课程设计】基于UDP协议采用Winsock构建网络聊天室详解.docVIP

【课程设计】基于UDP协议采用Winsock构建网络聊天室详解.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
摘要 基本的网络编程都是建立在Winsock基础上的,作为网络编程接口,Winsock屏蔽了网络底层的复杂的协议和数据结构,因此,在Win32平台上,访问众多的基层网络协议,Winsock是首选接口。 用Winsock构建一个网络聊天室,有两种基本的方式:数据报方式和流方式,即面向无连接的数据报方式和面向连接的流方式,对应的协议分别为UDP(User Datagram Protocol)协议和TCP(Transport Control Protocol))协议。 本次我们设计的网络聊天室是基于UDP协议的无连接方式,软件编程则主要使用Winsock提供的API函数。 关键字:网络编程 UDP协议 API函数 1 设计目的与功能要求 1.1 设计目的 (1)编写一个简单的C/S模式的网络聊天室软件 (2)进一步掌握利用Visual C++进行程序设计的能力; (3)进一步理解和运用面向对象程序设计的思想和方法; (4)初步掌握开发一个小型实用系统的基本方法; (5)理解Windows程序的运行过程。 1.2 网络聊天室功能要求 网络聊天室系统设计完成后,我们可以在一台计算机上运行服务端程序,然后在另一网络的其他计算机上运行客户端程序,登录到服务器上,各个客户之间就可以聊天,或者直接在一台计算机上同时运行服务器端和客户端,然后两者之间进行通信。 1.2.1 服务器端功能要求 (1)初始化socket, 创建服务器端。 (2)维护一个链表,保存所有用户的IP地址、端口信息。 (3)接受用户传送来的聊天信息,然后向链表中的所用用户转发。 (4)接受用户传送来的连接判断命令,并向用户发出响应命令。 1.2.2 客户端功能要求 客户端界面上的两个文本框,一个用于显示接受的聊天信息,一个用来接受用户输入的聊天信息。当按下“发送”按钮时将信息发送给服务器。 2 设计原理 本次设计的题目是实现一个简单的C/S模式的网络聊天室,基于UDP协议,是不可靠的面向无连接的方式。设计的基本原理也就是UDP编程原理。 UDP协议是一个简单的面向数据报的传输层协议,又叫用户数据报协议。它提供了无连接的、不可靠的数据传输服务。无连接是指它不像TCP协议那样在通信前先于对方建立连接以确定对方的状态。不可靠是指它直接安装指定的IP地址和端口号将数据包发送出去,如果对方不在线的话数据就可能丢失。UDP协议编程原理如下: 2.1 服务器端原理 (1)创建套节字(socket); (2)绑定IP地址和端口(bind); (3)收发数据(sendto/recvfrom); (4)关闭连接(closesocket)。 2.2 客户端原理 (1)创建套节字(socket); (2)收发数据(sendto/recvfrom); (3)关闭连接(closesocket)。 UDP协议用于发送和接收数据的函数是sendto和recvfrom。它们的原形如下: int sendto( SOCKET s, //用于发送数据的套节字 Const char FAR *buf, //指向发送数据的缓冲区 int len, //要发送数据的长度 int flags, //一般指定为0 //指向一个包含目标地址和端口号的sockaddr_in 结构 const struct sockaddr * to, int tolen); //为socket_ in 的结构大小 同样UDP协议接收数据也需要知道通信对端的地址信息。 int recvfrom(SOCKET s,char FAR * buf,int len,int flags,struct sockaddr FAR * from,int FAR* fromlen); 2.3 网络聊天室设计流程 该程序设计使用Windows Sockets编程。在数据传输协议中,我们使用UDP协议,UDP协议是无连接的协议,在服务器端不调用listen函数进行监听,也不调用accept函数建立连接, 其操作流程图如下图所示:首先,用socket函数建立套接字,然后根据本地的IP进行绑定,然后就可以通过使用send 函数和 reve 函数来进行数据的发送和接收了。Windows应用程序有两种方式:一种是Windows C编程方式,另一种是Visual C++编程方式。在一般情况下,Visual C++编程方式编写的程序源代码量小、开发时的工作量小、工作难度也较小,但编译后的代码量较大,运行速度略低;而Windows C编程方式编写的程序源代码量虽然较大,但可执行代码效率高。随着技术的进步,Visual

文档评论(0)

琼瑶文档 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档