即时网络通信软件的设计与实现 毕业论文.docx

上传人:小飞机 文档编号:5077838 上传时间:2023-06-02 格式:DOCX 页数:21 大小:305.17KB
返回 下载 相关 举报
即时网络通信软件的设计与实现 毕业论文.docx_第1页
第1页 / 共21页
即时网络通信软件的设计与实现 毕业论文.docx_第2页
第2页 / 共21页
即时网络通信软件的设计与实现 毕业论文.docx_第3页
第3页 / 共21页
即时网络通信软件的设计与实现 毕业论文.docx_第4页
第4页 / 共21页
即时网络通信软件的设计与实现 毕业论文.docx_第5页
第5页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《即时网络通信软件的设计与实现 毕业论文.docx》由会员分享,可在线阅读,更多相关《即时网络通信软件的设计与实现 毕业论文.docx(21页珍藏版)》请在三一办公上搜索。

1、1. 绪论11.1选题的意义11.2网络通信的研究现状21.3毕业设计解决的主要问题22. C/S即时网络通信软件的概述22.1 系统的概念22.2可行性分析22.3系统的关键技术32.4系统的开发方法与开发工具42.5通信软件流程分析53. 服务器端的设计63.1服务器端功能的设计63.2服务器端功能框架图73.3服务器端的工作流程73.4服务器端控件设计83.5服务器端界面设计84. 客户端功能设计94.1客户端功能框架图94.2客户端工作流程104.3客户端控件的设计114.4客户端界面的设计125. 网络通信软件代码的实现145.1网络通信软件服务器端代码的实现145.2建立服务器代码

2、的实现145.3实现文字与语音通信代码的实现155.4客户端实现文件交换代码的实现166. 通信软件的测试177. 结论与展望187.1结论187.2展望18参考文献19ABSTRACT19基于C/S即时网络通讯软件的设计与实现王磊内容提要:叙述了传统通信方式,新兴网络通信的现状和优缺点,重点讲述了基于C/S 的即时网络通讯软件的设计与实现,设计工具采用微软开发的Visual C+ 6.0中的Win32 SDK 和MFC库。通过在服务器端安装服务器程序,在客户端安装客户端程序,实现了多个用户 之间的文字聊天、文件发送,并初步实现了语音聊天的功能。通过开发一个与实际应用相 结合的通信软件深入学习

3、和理解了软件的初步开发流程。关键词:网络通讯软件Client/Server 文件发送 语音聊天Visual C+1. 绪论1.1选题的意义21世纪是信息的时代,人与人之间的交流越来越密切,传统的通信方式,如电话,电 报等在实时上虽仍占有一定的优势,但是在信息高速发展的今天,传统通信方式由于其成 本过高,方式单一的缺点,越来越暴露其弊端。传统的通讯方式的缺点:(1)成本高。目前人们所使用的通讯方式普遍价格过高,移动通信的价格更是不菲。 这就在某种程度上限制了用户的使用和数量。作为用户来讲,消费水平是一个很重要的选 择标准。(2)使用方式单一。我们现在使用的传统通信方式主要是电话,电报,传真等。这

4、些 方式只能听到声音或看到文字,用户并不能感受到对方,缺乏身临其境的感觉。(3)传输数据量少。传统的通讯方式的带宽并不高,所以传输的数据量大大受到限制。新兴的网络通讯的优点:(1)成本低。网络具有价格便宜,对于大多数用户来说,购买一台电脑不仅可以成为 日常的通信工具,更重要的是电脑可以作为很多方面的用途,如处理日常的文件,存储个 人的资料等,而网络通讯仅仅是一个很小的附加功能,更由于随着经济的发展,拥有电脑 就像拥有电视机一样普遍,电脑的价值已经被普遍认可。(2)方便快捷。网络聊天非常方便,传统的手机短信编辑相比电脑键盘来说具有很大 的劣势,电脑打字要更加地快速,同时网络也可以进行语音聊天,更

5、加省去了输入的麻烦。 视频聊天也是网络通信的一个很大的优势,拉近了聊天双方的距离,使交流更加亲切。(3)传输的信息量大。和传统的方式相比较,其数据量提高了数十倍,并且随着科技 的进步,这种优势将会继续扩大。我国拥有世界上最多的网络用户,目前正在进行高速信 息化建设,因此对网络的使用将会进一步扩大。网络通讯软件具有上述的优势,因此其发展的前景将是广阔的,这也是研究它的意义 所在。1.2网络通信的研究现状当前网络通讯软件在生活中的应用非常广泛,如我们平时使用的QQ、MSN、Xychat等 软件,这些软件给我们的通讯带来了便利。随着网络的普及,人们对网络的依赖性也越来 越大。聊天软件已经得到人们的认

6、可,关于聊天软件的实现技术也获得了极大的突破,在实 现最基本的文字聊功能后,人们更好的实现了语音聊天等带有多媒体效果的通讯方式。同 时,在聊天的过程中,向对方发送诸如图片,音乐等文件也非常的方便,使用户从单一枯 燥的文字聊天转向丰富多彩的多媒体聊天方式。目前,国内外对于聊天软件的研究技术比较成熟,QQ作为中国聊天软件的早期产品, 已经占据了国内约70%的聊天软件市场,同时创造了年产值几百亿的企业,可见聊天软件的 地位和对人们的作用。我国经济现在正在处于高速发展的阶段,中央将信息化的发展作为 今后经济增长的主要促进因素,网络通讯软件属于信息产业,因此在未来将获得更好的发 展。随着计算机的应用和网

7、络普及,对计算机技术的研究将会更加深入,如当前出现的人 工智能和嵌入式等方面,网络通讯也必将是以后研究的重点。作为在校学习计算机的大学 生,学习网络通信应是必不可少的,无论使用VC,还是J2EE等编程平台,有很多地方都会 涉及到网络编程,所以学习网络应用方面的知识是一个很好的联系实际的例子,对于以后 进入工作及以后的学习也会是一个很好的锻炼机会1.3毕业设计解决的主要问题本毕业设计“即时网络通讯软件的设计与实现”将解决的主要问题如下:(1)实现用户上下线管理,维护用户的个人信息。(2)实现两两用户之间的文字交流。(3)在文字聊天的基础上增加了语音聊天,使用户之间的通信方式更加灵活与方便。(4)

8、添加了远程文件传输的功能,用户可以将本地计算机的资源通过网络发送聊天的 对方,实现了资源的共享。2. C/S即时网络通信软件系统的概述2.1系统的概念C/S就是客户机/服务器模型,客户机下载客户端程序并安装,在服务器端安装服务器 软件。客户端首先连接服务器,向服务器报告自己的数据,然后可以向服务器提出请求, 由服务器根据请求的内容进行响应,从而实现了用户之间的通讯。2.2可行性分析2.2.1目标即时网络通讯软件是一个集经济性、易用性、互动性于一身的通信平台,在实际的通 信中将受到越来越广泛地应用。网络通讯作为一种新的通信方式,将最大限度利用现有网 络资源,可以满足不同用户之间通信和资源共享的需

9、要。使人们花费最小的代价来获得最 大的经济效益。2.2.2经济上的可行性分析本软件作为一个毕业设计的一个项目,无需开发经费,在经济上是完全可以接受的, 并且本软件实施后可以显著提高通信的效率,有助于更好的交流沟通,所以本系统在经济 上是可行的。从软件系统开发的成本一收益角度方面,基于C/S的即时网络通讯软件的开 发设计属于一项低投入高效益的工作,可以大大减少传统通信方式的成本,网络通讯是计 算机应用的一个很小的功能,它的传输载体仅是网络通道,同时它的应用不会给网络带来 任何损失,所以在经济上它是非常节约成本的。同时它可以仅在企业内部网络里运行,给 内部人员的交流带来极大的方便,省去了拨打电话的

10、时间与费用,总之,在经济上是完全 可行的。2.2.3技术可行性分析(1)计算机的应用越来越广泛,网络也以十分迅速的方式在发展,各种硬件设施已经 比较便宜,绝大部分家庭或企业均可接受。通过网络可以实现信息共享与管理、信息的发 布与管理,从而方便使用者进行信息交流和信息共享。(2)现代计算技术、网络技术的发展给通信方式带来了翻天覆地的变化,以现有的技 术已经可以开发出功能强大的通讯软件。(3)开发人员具备良好的技术基础和较强的学习能力,能较快掌握新技术,有能力开 发新软件,在已有的知识基础上实现网络通讯软件2.2.4社会环境可行性分析随着计算机网络技术的不断发展,通信方式已经渐渐从传统方式向网络方

11、式转变,人 们对网络的使用也非常多,尤其是青年一代对网络的使用。通信软件可以满足人们在日常 生活娱乐时的通信需求。2.2.5结论意见本通讯软件的开发.使得通信方式更加多样化、节约化、高效化。同时.该系统较好的 结构、较全面的功能.使得本系统具备良好的实用价值。经过可行性分析研究,本系统可立 即着手组织开发。2.3系统的关键技术2.3.1网络传输协议(1)TCP传输协议。TCP协议是面向连接的协议,即在点点进行连接之前必须首先建 立数据通路,就向我们平时打电话一样,在通话之前必须先拨号,等待对方的接听以后才 能进行通话。它的数据传输采取的是同步方式,当数据发送到对方时,必须等待接收方的应答信号后

12、才能继续下一次的发送工作,即我们平时所说的“握手”方式。由于TCP协议 采用的是这种连接方式,因此由它建立的连接,是可靠的,在网络不是十分理想的情况下, 速度牺牲很大,但是却能够保证所传输的数据的正确性。(2)UDP传输协议。UDP协议采用的是面向无连接的通信方式,它在通信前不需要提 前建立通信链路,它是异步的,数据的发送比较迅速,不需要等待应答信号。优点是发送 速度较快,但是在数据的一致性方面不好,在网络差的情况下,容易丢失数据包。一般用 于远程视频等对一致性要求并不是很高的数据传输方面。2.3.2音频数据采集与播放技术(1)在语音聊天方面,要熟悉有关音频数据的采集与播放的流程,下图给出了详

13、细的 音频数据采集流程图。图1音频数据采集流程图。2.4系统的开发方法与开发工具2.4.1 Visual C+ 6.0 平台概述关于Visual C+ 6.0,是由微软开发的成熟的工具平台。Visual C+ 6.0包括Win32 SDK,MFC等,它也支持C语言程序的开发,是一款使用非常广泛的面向对象编程工具。Visual C+ 6.0在开发基于C/S的软件时具有自身的优势,但是Visual C+ 6.0与其他编程语言 相比较具有一定的难度,要对其熟练的掌握,没有长时间的应用是不容易的。选择使用 Visual C+ 6.0的主要原因是微软提供了 Win32 SDK和MFC开发包,它把所有使用

14、的函数 进行了封装,使用者不需要具有底层开发的知识便可以开发高质量的应用软件。2.4.2 Visual C+ 6.0 的特征(1)既支持面向过程的编程方式,同时主要支持面向对象的编程方式。(2)Visual C+ 6.0包含了微软开发的MFC类库和Win32 SDK,极大的方便了开发人 员的工作,能够产生高质量的软件(3)使用面广,是一款应用非常广泛的开发平台,它可以应用在开发各种形式的软件 方面。(4)学习起来较一般的语言有一定的难度,不容易掌握。(5)高效率。Visual C+ 6.0采用一次编译的方式,使得它在运行的实效性上,具有 其他编程工具所不具备的优势。(6)支持性好。其以Wind

15、ows作为主要支持平台。2.4.3开发环境操作系统:Microsoft XP Service Pack2程序语言:C+开发环境:Visual C+ 6.02.5软件通信流程分析在基于C/S模型的网络通信中,服务器在整个系统的作用很关键,处于中心位置,客 户端的关键操作要经由服务器来提供,下图展示了 C/S结构的模型图:图2 C/S模型图软件系统的大概信息流程图如下:图3通信流程图图3描述了系统的通信流程,客户端首先要登录服务器来获得所需要的数据,服务器 处于客户端之间,它可以维护数据库,管理客户端,其中客户端之间的文件传输在客户端 点与点之间直接进行。图中采用的数据库是Microsoft Ac

16、cess,首先它可以满足小型系统对数据库的需求, 其次它不需要过多的配置,而SQL Server 一般是作为大型数据库来应用,它的配置操作要 繁琐的多。Visual C+ 6.0对Microsoft Access有着很好的支持,使用很少的代码就可以 实现数据库的连接与存取等操作,这是它的优势所在。3 .服务器端的设计3. 1服务器端功能的设计服务器作为处于本软件的核心,具有多种功能,它维护了客户端的信息和上下线管理信 息,工作比较复杂,下面介绍服务器端的主要功能:(1) 初始化机器。初始化工作包括:申请内存空间用于和客户端通信,建立客户端连 接数据库,建立监听套接字,绑定端口,监听连接,维护客

17、户端连接出入的数据库,初始 化服务器的各个控件的值(2) 存储客户端的信息。服务器和Microsoft Access数据库结合,维护用户的个人信 息,包括ID、密码、昵称、姓名、年龄、地址等,同时还保存客户端的IP信息。(3) 转发语音聊天信息。服务器端对由客户端发来的语音信息进行监听,并发回其他 客户端,或做其他的处理。(4) 实现客户端的上下线的管理。用户的操作都反映在服务器的在线用户列表中,通 过此列表也为其他客户端提供在线用户信息。3.2服务器端功能框架图服务器 k.1配监异通置听常信环连处请境接理求维文广语护字音信传传息递播递图4服务器功能框架图图4显示了服务器的主要的功能,服务器要

18、处理部分作业,用来为客户端提供服务。 其中,配置环境包括加载套接字库,绑定端口,建立监听等。维护信息包括维护客户端的 用户信息,向客户端发送其他的客户端信息。通信请求所需做的工作最多,服务器接收客 户端发来的消息,进行判断,决定下一步操作。语音传递功能,由服务器将接收到的语音 信息传递给其它客户端。服务器功能的优化设计:服务器作为客户端之间的桥梁,从实际应用的角度出发,不应该把客户端所有的操作 全部由服务器来承担,做这样的优化,一方面为了减轻服务器端处理的信息量,使服务器 从繁重的任务中解脱出来,处理更加紧迫的任务;另一方面,客户端之间的一些不涉及到 服务器的操作,由客户端之间采取点对点的方式

19、来完成,这就可以减少数据传递的时间。 比如在文件发送的时候,若采取将客户端的数据发到服务器,然后再由服务器发回接收客 户端,这就会花费很多的时间,使用户难以接受。3. 3服务器端的工作流程图5服务器的工作流程图图5显示了详细的服务器工作流程,服务器启动以后建立了两个线程,其中一个用于 监听客户端的连接,以便维护在线用户的数据库,另外一个线程用于处理由客户端发来的 各种请求。如用户刷新在线用户列表,服务器则通过此线程将新的在线客户端信息传递给 该客户端。3.4服务器端控件的设计服务器界面的控件属性表如下所示:表1服务器的控件属性表:控件类型控件标识属性属性值Static TextIDC_LIST

20、1TextStatic TextIDC_STATICTextIP:ButtonIDC_SERVERSTARTCaption启动ButtonIDC_SERVEREXITCaption退出3.5服务器端界面的设计图6服务器启动界面图6显示了服务器初始界面的设计,当单击了启动按钮以后,便可以在电脑上建立服 务器,通过此程序来为客户端的登录做准备,并为其提供服务。图7语音聊天服务器图7显示了语音聊天服务器的界面,系统将语音聊天服务器独立出来,用来转发客户 端之间的语音信息。独立出来此模块,有助于更好的实现语音通信。4. 客户端的功能设计客户端的工作也比较复杂,它具有如下基本功能:(1) 创建文字信息接

21、收线程,收发文字信息,可以实现客户端之间的文字信息的通信。(2) 语音信息的收集与播放功能。客户端接收来自服务器发来的语音信息,将信息存储 到本地内存,然后播放,实现语音聊天。客户端具有采集语音信息的能力,采集后发送。(3) 客户端之间的文件交换。设计了另外两个线程,用于发送和接收文件。当另一用 户请求文件发送时,先将此信息发送给对方,等待对方的确认。若同意接收,由接收方新 建一个接收线程,并连接发送方,由此可以实现文件的传输。在传输的过程中显示文件发 送的进度。发送和接收文件独立于文字聊天和语音聊天的功能,通过建立独立的套接字, 在另一个端口进行绑定。4.1客户端的功能框架图在客户端的功能中

22、,增加了文字聊天,文件发送和语音聊天,其功能图如下所示:客户端J配查接修异置看收改常环资信资处境料息料理文文语字件音聊传聊天输天图8客户端功能框架图为了更好的完成上述功能,对客户端功能的实现采取如下优化设计:文件交换功能采用点对点的方式,客户端在登录服务器以后,便保存了由服务器发来 的在线的客户端基本信息。当发送文件时,直接调出该信息,建立一个线程,等待接收方 的连接,连接成功后就可以进行文件的传输。这种点对点的文件传输方式大大减少了所需 的时间,使文件传递的更加迅速。语音聊天的功能采用了比较底层的波形处理API函数,主要是考虑到底层函数对设备 操作的方便性,及时性,底层的函数可以更好的处理传

23、递来的语音数据。它将数据收集在 设定的内存缓冲区内,当语音数据装满缓冲区时,便发出数据满消息,然后调用播放函数, 如此循环控制,完成语音聊天。4.2客户端工作流程当用户登录服务器之后会新建一个线程,用于接收其他客户端发来的请求或消息。若 是接收到来自其它客户端的消息则直接显示在聊天窗口上。若不是,此线程会检测到包含 在其中的请求命令,而决定下一步的操作。如接收到FILE指令时,说明对方希望传递文件, 则客户端建立一个新的线程,用于双方之间的文件交换。同样,若是双方进行语音聊天或 者和其他的客户端之间进行聊天,也会创建一个新的线程来连接,这就可以实现多人之间 的点对点的通讯。图9客户端工作流程图

24、图9所示为客户端的工作流程图,处于核心的处理线程接收外部请求,通过过滤处理 后而建立相应的线程,图中线程1,线程2代指其它客户端要进行的工作,交由这些线程处 理。客户端可以创建很多个线程,直到到达聊天用户的聊天上限为止。4. 3客户端控件的设计表2客户端登录页面控件设计表控件类型控件标识属性属性值Static TextIDC_STATICText用户号码:Static TextIDC_STATICText用户密码:Static TextIDC_STATICText服务器IP:Check BoxIDC_CHECKText保存密码IP AddressIDC_SERVERIPIPButtonIDC_

25、LOGINCaption登录ButtonIDC_EXITCaption取消ButtonIDC_REGISTERCaption注册下表列举了客户端中聊天界面控件的属性表:表3聊天界面控件设计表控件类型控件标识属性属性值Edit BoxIDC_SHOWTEXTTextEdit BoxIDC_EDITTEXTTextButtonIDC_VOICECHATCaption语音聊天(&V)ButtonIDC_SENDFILECaption发送文件(&F)ButtonIDC_SHOWINFOCaption查看资料(&W)ButtonIDC_STOPFILECaption停止传送(&X)ButtonIDC_B

26、UTTON_CLEARMSGCaption清空记录(&C)ButtonIDC_SENDMSGCaption发送(&Enter)ButtonIDC_EXITCHATCaption关闭(&Q)4.4客户端界面的设计用户在只有图10界面输入正确的用户名,密码,和服务器的IP后,和服务器进行通信, 在通过登录后才能显示用户的数据信息。图10客户端登录界面客户端主界面的设计:图11用户列表界面图11界面用来显示在线的用户,用户可以双击来和其他的用户进行聊天,文件发送或 语音聊天。图12聊天对话框页面图12是用户之间进行聊天的主界面,用户之间发送的文字消息都可以显示在编辑框之 中。图13修改资料页面图13

27、是用户修改个人资料时显示的界面,当修改完资料后,点击修改按钮,就可以将 新的个人资料发送给服务器,服务器进行保存。图14语音聊天页面图14是用户之间语音聊天的界面,当用户按下语音聊天按钮时,客户端向服务器发出 连接,连接成功后,若对方同意此次语音请求,则双方可以进行通信。5. 网络通讯软件代码的实现5.1网络通讯软件服务器端代码的实现系统使用的是MFC架构,大部分代码均是继承于MFC原有的类,在服务器的建立时, 对文字聊天和语音聊天采用的是TCP传输协议。下面叙述建立工程的步骤:(1)建立MFC工程:打开Visual C+ 6.0,选择【文件】 【新建】(2)在Project栏目下选择MFC

28、AppWizard,工程名输入Server(3)在下面的选择步骤中,分别选择,Dialog Based,选择Windows Sockets Support,Static MFC DLL(4)完成即可建立一个标准的基于对话框的MFC程序。项目包含的主要文件如下:NetMsgClientDlg.cppChatDlg.cppLoginDlg.cppRegisterDlg.cppShowUserInfoDlg.cppTRAYICON.cppServer.cppServerDlg.cppServerSocket.cppMessg.cppHandleMessg.cppSendFile.cppRecvFil

29、e.cppSound.cppServer.rcNetMsgClient.rcNetMSG.mdb5.2建立服务器代码的实现CNetMsgServerDlg.cpp的部分关键代码:/创建 socketif(sListen=WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED)=INVALID_SOCK ET)AfxMessageBox(错误:create socket);WSACleanup();return -1;/邦定主机地址inetAddr.sin_addr.s_addr=htonl(INADDR_ANY);inetAddr.

30、sin_family=AF_INET;inetAddr.sin_port=htons(SERVER_PORT);if(bind(sListen,(SOCKADDR*)&inetAddr,sizeof(inetAddr) =SOCKET_ERROR)AfxMessageBox(错误:bind in start);WSACleanup();return -1;侦听if(listen(sListen,5)!=0)AfxMessageBox(错误:l isten failed in start);return -1;g_serverSocket = sListen;dlg-m_list.InsertS

31、tring(g_dwListCount+,创建服务器成功);dlg-m_list.SetTopIndex(g_dwListCount-1);dlg-GetDlgItem(IDC_SERVER_BEGIN)-EnableWindow(FALSE);/创建处理线程HANDLE h_Handle;if(h_Handle =CreateThread(NULL,0,ProcessThreadIO,NULL,0,&dwThreadID)=NULL)PrintSystemError(不能创建线程);return -1;5. 3实现语音通信代码的实现void CHandleMessg:OnReceive(in

32、t nErrorCode) CSocket:OnReceive(nErrorCode);doCMessg temp;temp.Serialize(*m_Recvbit);m_dlg-m_sMsgList+=temp.m_strText;m_dlg-SetDlgItemText(IDC_SERVERMONITOR,m_dlg-m_sMsgList);if(temp.m_tag=1&m_dlg-m_voicechat=TRUE)语音数据memcpy(m_dlg-m_sound.m_cBufferOut,temp.m_buffer,MAX_BUFFER_SIZE);int linenum=(CEdi

33、t *)(m_dlg-GetDlgItem(IDC_SERVERMONITOR)-GetLineCount();(CEdit *)(m_dlg-GetDlgItem(IDC_SERVERMONITOR)-LineScroll(linenum);for(POSITION pos=m_dlg-m_connectionList.GetHeadPosition();pos!=NULL;) CHandleMessg * t = (CHandleMessg*)m_dlg-m_connectionList.GetNext(pos);if(t-m_hSocket!=this-m_hSocket)t-SendM

34、essage(&temp);while (!m_Recvbit-IsBufferEmpty();5.4客户端文件交换代码的实现SendFile的部分代码如下:/接收文件线程UINT threadRecvFile(LPVOID v)创建SOCKET结构代码省略开始接受文件文件信息if(recv(cliFileSock,(char *)&( dlg-m_streamFileInfo),sizeof( dlg-m_streamFileInfo),0)SOCKET_ERROR)AfxMessageBox(连接文件信息出错!”);dlg-GetDlgItem(IDC_SENDFILE)-EnableWi

35、ndow(TRUE);closesocket (cliFileSock); return FALSE;存储文件为:CFileDialog saveFileDlg( FALSE,NULL,dlg-m_streamFileInfo.szFileTitle,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T(”所有(*.*)|*.*|);if(IDOK!=saveFileDlg.DoModal()memset(buff,0,sizeof(buff);sprintf(buff,”s”,”NOtn”);send(cliFileSock,buff,sizeof(buff),0)

36、;closesocket(cliFileSock);dlg-GetDlgItem(IDC_SENDFILE)-EnableWindow(TRUE);return 1;CString filePathname;filePathname = saveFileDlg.GetPathName();/接受文件memset(buff,0,sizeof(buff);sprintf(buff,”s”,”YEStn”);send(cliFileSock,buff,sizeof(buff),0);CFile destFile(filePathname, CFile:modeCreate | CFile:modeW

37、rite | CFile:typeBinary);if(dlg-m_streamFileInfo.nFileSizeLow/(1024*1024) != 0)nfileSize = dlg-m_streamFileInfo.nFileSizeLow/(1024.0*1024.0);strPrompt.Format(”正在接收文件%s,大小:%.2fMB”,dlg-m_streamFileInfo.szFileTitle,nfileSize);elsenfileSize = dlg-m_streamFileInfo.nFileSizeLow/(1024.0);strPrompt.Format(”

38、正在接收文件%s,大小:%.2fKB”,dlg-m_streamFileInfo.szFileTitle,nfileSize);循环接收文件UINT dwRead = 0;UINT dw = 0;while(dwReadm_streamFileInfo.nFileSizeLow)byte* data = new byteMAX_BUFF_SIZE;memset(data,0,MAX_BUFF_SIZE);dw=recv(cliFileSock,(char *)data,MAX_BUFF_SIZE,0);elseSetFileTime(HANDLE)destFile.m_hFile,&(dlg-

39、m_streamFileInfo).ftCreationTime,&(dlg-m_streamFileInfo).ftLastAccessTime,&(dlg-m_streamFileInfo).ftLastWriteTime);destFile.Close();SetFileAttributes(dlg-m_streamFileInfo.szFileTitle,dlg-m_streamFileInfo.dwFileAttributes);strPrompt.Empty();strPrompt.Format(”完成接收文件%s”,dlg-m_streamFileInfo.szFileTitle

40、);dlg-ShowMsg(系统,strPrompt);dlg-m_progressFile.SetPos(0);dlg-m_progressFile.ShowWindow(FALSE);if(cliFileSock !=INVALID_SOCKET)closesocket(cliFileSock);dlg-GetDlgItem(IDC_SENDFILE)-EnableWindow(TRUE);AfxEndThread(0);return 1;6. 网络通讯软件的测试通讯软件测试工作比较顺利,可以实现文字和文件的传输,对于语音聊天,可以完成 基本的语音传输与播放工作。但在测试过程中出现了很多问

41、题,如语音通信上不够清晰, 噪音过大,出现回声,语音的响应不够及时。这是因为没有对语音数据进行压缩与过滤处 理,使得音频数据在传递过程中不是很理想,是需要改进的方面。文件传输功能目前对于 文件的容量有一定的限制,对很大的文件的传输,出现了数据丢失的问题或者文件不能打 开的错误。7. 总结与展望7.1总结经过精心设计制作和反复地调试工作,基于C/S的即时网络通讯软件基本完成。软件 的功能包括:文字聊天、文件发送、语音聊天。可以满足基本的通信交流的要求,方便了 用户。通过这次毕业设计,我深入学习和理解了软件的开发流程,基本掌握了 VC+开发工具, 在软件实现过程中我能认真思考,不断钻研,在实际的开

42、发中变换新的思路,提高了软件 的整体效率和质量,如对服务器功能的界定上,重新定义了服务器的工作任务,使它更好 的实现了桥梁的作用。在语音聊天的功能的实现上,创建了自己的类,对语音的采集与播 放功能进行了封装,形成了一个独立的模块。用户之间的各种通信,通过创建不同的进程 来完成,可以实现较多的工作。在软件开发过程中也遇到了很多的问题,文件发送的实现 花费了较多的时间,在刚开始做的时候,我采用的是发送客户端先将数据发送到服务器, 然后再由服务器传回接收客户端。但是每次在发送稍大一点的文件时都会非常的慢,同时 丢失一部分数据,导致文件不可用。后来,我研究了聊天软件QQ的文件发送的功能,发现 QQ的这

43、项功能在本地计算机之间传送文件特别的迅速,我认为它肯定不是采取我的那种方 法,因此我将文件发送改为点对点的方式,这样实现就容易得多,从而成功地解决了这个 问题。在今后的工作学习中,我仍会不断的完善它,充实它,使之提供更方便、更准确、 更快捷,更全面的服务。由于时间和技术水平的缘故,本系统还存在着许多方面的工作尚未完善。比如,实现 的功能较少,只能满足通信软件的一般需求,系统在可靠性上相对较弱,在系统的更进一 步的实现阶段,应提高系统的正确性和稳定性,以及系统的容错性。另外,本系统只提供 了一些基本的文件操作功能,这些功能还不能反应应用中的全貌,还需要进一步地提高和完 善。7.2展望随着宽带的普

44、及,即时通讯的内涵也开始变化。与过去的纯文本交流不同,新型的即 时通信业务融合了视频、音频交流等宽带应用元素。目前各种即时通信除提供了基本的即 时互动交流外,还能提供视频、语音通信服务,在短信收发、文件共享、数据传输、游戏、 娱乐、个性化设置等方面也都有大的开拓和创新。即时通讯软件正在面临第二次发展浪潮, 即基于P2P技术的多媒体以及基于IP技术的通信。在未来的一段时间,即时网络通讯软件的发展将会更加迅速,更加趋于多样化。从我 国目前的国情来看,信息产业是重点促进发展的产业,信息产业面临着难得的机遇期。即 时网络通信软件在普通大众的生活之中必将越来越广泛,对通讯软件的功能和性能的要求 也会越来

45、越高。参考文献:1 周霭如,林伟健编著.C+程序设计基础M.北京:电子工业出版社,2005年版,435页2 孙鑫,于安萍编著.VC+深入详解M.北京:电子工业出版社,2006年版,767页3 四维科技,曹衍龙,刘海英编著.Visual C+网络通信编程实用案例精选M.北京:人民邮电出版社,2006年版,504页4 尹立民,王兴东主编,Vsual C+ 6.0应用编程150例M.:北京:电子工业出版社,2004版,484页5 唐彬,刘超编著,Visual C+案例开发集锦M.北京:电子工业出版社,2005版,302页6 杨富国主编,Visual C+程序开发案例解析M.北京:清华大学出版社,北京交通大学出版社,2006版,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号