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

上传人:sccc 文档编号:4858549 上传时间:2023-05-20 格式:DOC 页数:20 大小:287.02KB
返回 下载 相关 举报
毕业设计论文即时网络通信软件的设计与实现.doc_第1页
第1页 / 共20页
毕业设计论文即时网络通信软件的设计与实现.doc_第2页
第2页 / 共20页
毕业设计论文即时网络通信软件的设计与实现.doc_第3页
第3页 / 共20页
毕业设计论文即时网络通信软件的设计与实现.doc_第4页
第4页 / 共20页
毕业设计论文即时网络通信软件的设计与实现.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

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

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.网络通信软件代码的实现14 5.1网络通信软件服务器端代码的实现14 5.2建立服务器代码

2、的实现14 5.3实现文字与语音通信代码的实现15 5.4客户端实现文件交换代码的实现166.通信软件的测试177.结论与展望187.1结论187.2 展望18参考文献19ABSTRACT1919计算机信息工程学院本科毕业设计基于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、开始录音清空内存输入内存块是否已满NNYY结束录音?Y 图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和M

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

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

16、服务器处于客户端之间,它可以维护数据库,管理客户端,其中客户端之间的文件传输在客户端点与点之间直接进行。 图中采用的数据库是Microsoft Access,首先它可以满足小型系统对数据库的需求,其次它不需要过多的配置,而SQL Server一般是作为大型数据库来应用,它的配置操作要繁琐的多。Visual C+ 6.0对Microsoft Access有着很好的支持,使用很少的代码就可以实现数据库的连接与存取等操作,这是它的优势所在。3服务器端的设计31服务器端功能的设计服务器作为处于本软件的核心,具有多种功能,它维护了客户端的信息和上下线管理信息,工作比较复杂,下面介绍服务器端的主要功能:(

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

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

19、出来,处理更加紧迫的任务;另一方面,客户端之间的一些不涉及到服务器的操作,由客户端之间采取点对点的方式来完成,这就可以减少数据传递的时间。比如在文件发送的时候,若采取将客户端的数据发到服务器,然后再由服务器发回接收客户端,这就会花费很多的时间,使用户难以接受。33 服务器端的工作流程启动成功监听连接线程处理命令线程客户端NY 图5 服务器的工作流程图图5显示了详细的服务器工作流程,服务器启动以后建立了两个线程,其中一个用于监听客户端的连接,以便维护在线用户的数据库,另外一个线程用于处理由客户端发来的各种请求。如用户刷新在线用户列表,服务器则通过此线程将新的在线客户端信息传递给该客户端。3.4服

20、务器端控件的设计服务器界面的控件属性表如下所示: 表1 服务器的控件属性表:控件类型控件标识属性属性值Static TextIDC_LIST1TextStatic TextIDC_STATICTextIP:ButtonIDC_SERVERSTARTCaption启动ButtonIDC_SERVEREXITCaption退出3.5服务器端界面的设计 图6 服务器启动界面图6 显示了服务器初始界面的设计,当单击了启动按钮以后,便可以在电脑上建立服务器,通过此程序来为客户端的登录做准备,并为其提供服务。 图7 语音聊天服务器图7 显示了语音聊天服务器的界面,系统将语音聊天服务器独立出来,用来转发客户

21、端之间的语音信息。独立出来此模块,有助于更好的实现语音通信。4. 客户端的功能设计 客户端的工作也比较复杂,它具有如下基本功能:(1)创建文字信息接收线程,收发文字信息,可以实现客户端之间的文字信息的通信。(2)语音信息的收集与播放功能。客户端接收来自服务器发来的语音信息,将信息存储到本地内存,然后播放,实现语音聊天。客户端具有采集语音信息的能力,采集后发送。(3) 客户端之间的文件交换。设计了另外两个线程,用于发送和接收文件。当另一用户请求文件发送时,先将此信息发送给对方,等待对方的确认。若同意接收,由接收方新建一个接收线程,并连接发送方,由此可以实现文件的传输。在传输的过程中显示文件发送的

22、进度。发送和接收文件独立于文字聊天和语音聊天的功能,通过建立独立的套接字,在另一个端口进行绑定。4.1 客户端的功能框架图在客户端的功能中,增加了文字聊天,文件发送和语音聊天,其功能图如下所示:客户端配置环境文字聊天文件传输语音聊天接收信息异常处理查看资料修改资料 图8 客户端功能框架图为了更好的完成上述功能,对客户端功能的实现采取如下优化设计:文件交换功能采用点对点的方式,客户端在登录服务器以后,便保存了由服务器发来的在线的客户端基本信息。当发送文件时,直接调出该信息,建立一个线程,等待接收方的连接,连接成功后就可以进行文件的传输。这种点对点的文件传输方式大大减少了所需的时间,使文件传递的更

23、加迅速。语音聊天的功能采用了比较底层的波形处理API函数,主要是考虑到底层函数对设备操作的方便性,及时性,底层的函数可以更好的处理传递来的语音数据。它将数据收集在设定的内存缓冲区内,当语音数据装满缓冲区时,便发出数据满消息,然后调用播放函数,如此循环控制,完成语音聊天。4.2客户端工作流程当用户登录服务器之后会新建一个线程,用于接收其他客户端发来的请求或消息。若是接收到来自其它客户端的消息则直接显示在聊天窗口上。若不是,此线程会检测到包含在其中的请求命令,而决定下一步的操作。如接收到FILE 指令时,说明对方希望传递文件,则客户端建立一个新的线程,用于双方之间的文件交换。同样,若是双方进行语音

24、聊天或者和其他的客户端之间进行聊天,也会创建一个新的线程来连接,这就可以实现多人之间的点对点的通讯。客户端处理线程文件线程外部请求登录语音线程线程2线程1外部请求图9 客户端工作流程图图9所示为客户端的工作流程图,处于核心的处理线程接收外部请求,通过过滤处理后而建立相应的线程,图中线程1,线程2代指其它客户端要进行的工作,交由这些线程处理。客户端可以创建很多个线程,直到到达聊天用户的聊天上限为止。4. 3客户端控件的设计表2 客户端登录页面控件设计表控件类型控件标识属性属性值Static TextIDC_STATICText用户号码:Static TextIDC_STATICText用户密码:

25、Static TextIDC_STATICText服务器IP:Check BoxIDC_CHECKText保存密码IP AddressIDC_SERVERIPIPButtonIDC_LOGINCaption登录ButtonIDC_EXITCaption取消ButtonIDC_REGISTERCaption注册下表列举了客户端中聊天界面控件的属性表:表3 聊天界面控件设计表控件类型控件标识属性属性值Edit BoxIDC_SHOWTEXTTextEdit BoxIDC_EDITTEXTTextButtonIDC_VOICECHATCaption语音聊天(&V)ButtonIDC_SENDFILE

26、Caption发送文件(&F)ButtonIDC_SHOWINFOCaption查看资料(&W)ButtonIDC_STOPFILECaption停止传送(&X)ButtonIDC_BUTTON_CLEARMSGCaption清空记录(&C)ButtonIDC_SENDMSGCaption发送(&Enter)ButtonIDC_EXITCHATCaption关闭(&Q)4.4客户端界面的设计用户在只有图10界面输入正确的用户名,密码,和服务器的IP后,和服务器进行通信,在通过登录后才能显示用户的数据信息。 图10 客户端登录界面客户端主界面的设计: 图11 用户列表界面图11 界面用来显示在线

27、的用户,用户可以双击来和其他的用户进行聊天,文件发送或语音聊天。 图12 聊天对话框页面图12 是用户之间进行聊天的主界面,用户之间发送的文字消息都可以显示在编辑框之中。图13 修改资料页面图13 是用户修改个人资料时显示的界面,当修改完资料后,点击修改按钮,就可以将新的个人资料发送给服务器,服务器进行保存。 图14 语音聊天页面图14 是用户之间语音聊天的界面,当用户按下语音聊天按钮时,客户端向服务器发出连接,连接成功后,若对方同意此次语音请求,则双方可以进行通信。5. 网络通讯软件代码的实现5.1 网络通讯软件服务器端代码的实现系统使用的是MFC架构,大部分代码均是继承于MFC原有的类,在

28、服务器的建立时,对文字聊天和语音聊天采用的是TCP传输协议。下面叙述建立工程的步骤:(1)建立MFC工程:打开Visual C+ 6.0 ,选择【文件】【新建】(2)在Project栏目下选择MFC AppWizard,工程名输入Server(3)在下面的选择步骤中,分别选择,Dialog Based,选择Windows Sockets Support,Static MFC DLL(4)完成即可建立一个标准的基于对话框的MFC程序。项目包含的主要文件如下:NetMsgClientDlg.cppChatDlg.cppLoginDlg.cppRegisterDlg.cppShowUserInfoD

29、lg.cppTRAYICON.cppServer.cppServerDlg.cppServerSocket.cppMessg.cppHandleMessg.cppSendFile.cppRecvFile.cppSound.cpp Server.rcNetMsgClient.rcNetMSG.mdb 5.2建立服务器代码的实现CNetMsgServerDlg.cpp的部分关键代码:/创建socketif(sListen=WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED)=INVALID_SOCKET)AfxMessageBox(

30、错误:create socket);WSACleanup();return -1;/邦定主机地址inetAddr.sin_addr.s_addr=htonl(INADDR_ANY);inetAddr.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,

31、5)!=0)AfxMessageBox(错误:listen failed in start);return -1;g_serverSocket = sListen;dlg-m_list.InsertString(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

32、,0,&dwThreadID)=NULL)PrintSystemError(不能创建线程);return -1;5. 3实现语音通信代码的实现void CHandleMessg:OnReceive(int 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_

33、voicechat=TRUE) /语音数据 memcpy(m_dlg-m_sound.m_cBufferOut,temp.m_buffer,MAX_BUFFER_SIZE);int linenum=(CEdit *)(m_dlg-GetDlgItem(IDC_SERVERMONITOR)-GetLineCount();(CEdit *)(m_dlg-GetDlgItem(IDC_SERVERMONITOR)-LineScroll(linenum);for(POSITION pos=m_dlg-m_connectionList.GetHeadPosition();pos!=NULL;)CHand

34、leMessg * t = (CHandleMessg*)m_dlg-m_connectionList.GetNext(pos);if(t-m_hSocket!=this-m_hSocket)t-SendMessage(&temp);while (!m_Recvbit-IsBufferEmpty();5.4 客户端文件交换代码的实现SendFile的部分代码如下:/接收文件线程UINT threadRecvFile(LPVOID v)/创建SOCKET结构代码省略/开始接受文件文件信息if(recv(cliFileSock,(char *)&( dlg-m_streamFileInfo),si

35、zeof( dlg-m_streamFileInfo),0) = SOCKET_ERROR) AfxMessageBox(连接文件信息出错!);dlg-GetDlgItem(IDC_SENDFILE)-EnableWindow(TRUE); closesocket (cliFileSock); return FALSE;/存储文件为:CFileDialog saveFileDlg( FALSE,NULL,dlg-m_streamFileInfo.szFileTitle, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, _T(所有 (*.*)|*.*|);if(IDO

36、K!=saveFileDlg.DoModal()memset(buff,0,sizeof(buff);sprintf(buff,%s,NOtn);send(cliFileSock,buff,sizeof(buff),0);closesocket(cliFileSock);dlg-GetDlgItem(IDC_SENDFILE)-EnableWindow(TRUE);return 1;CString filePathname;filePathname = saveFileDlg.GetPathName();/接受文件memset(buff,0,sizeof(buff);sprintf(buff,

37、%s,YEStn);send(cliFileSock,buff,sizeof(buff),0);CFile destFile(filePathname, CFile:modeCreate | CFile:modeWrite | 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_streamFile

38、Info.szFileTitle,nfileSize);elsenfileSize = dlg-m_streamFileInfo.nFileSizeLow/(1024.0);strPrompt.Format(正在接收文件%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_BUF

39、F_SIZE);dw=recv(cliFileSock,(char *)data,MAX_BUFF_SIZE,0);elseSetFileTime(HANDLE)destFile.m_hFile,&(dlg-m_streamFileInfo).ftCreationTime, &(dlg-m_streamFileInfo).ftLastAccessTime,&(dlg-m_streamFileInfo).ftLastWriteTime);destFile.Close();SetFileAttributes(dlg-m_streamFileInfo.szFileTitle,dlg-m_stream

40、FileInfo.dwFileAttributes);strPrompt.Empty();strPrompt.Format(完成接收文件%s,dlg-m_streamFileInfo.szFileTitle);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

41、);AfxEndThread(0);return 1;6. 网络通讯软件的测试通讯软件测试工作比较顺利,可以实现文字和文件的传输,对于语音聊天,可以完成基本的语音传输与播放工作。但在测试过程中出现了很多问题,如语音通信上不够清晰,噪音过大,出现回声,语音的响应不够及时。这是因为没有对语音数据进行压缩与过滤处理,使得音频数据在传递过程中不是很理想,是需要改进的方面。文件传输功能目前对于文件的容量有一定的限制,对很大的文件的传输,出现了数据丢失的问题或者文件不能打开的错误。7. 总结与展望7.1总结经过精心设计制作和反复地调试工作,基于C/S的即时网络通讯软件基本完成。软件的功能包括:文字聊天、文

42、件发送、语音聊天。可以满足基本的通信交流的要求,方便了用户。通过这次毕业设计,我深入学习和理解了软件的开发流程,基本掌握了VC+开发工具,在软件实现过程中我能认真思考,不断钻研,在实际的开发中变换新的思路,提高了软件的整体效率和质量,如对服务器功能的界定上,重新定义了服务器的工作任务,使它更好的实现了桥梁的作用。在语音聊天的功能的实现上,创建了自己的类,对语音的采集与播放功能进行了封装,形成了一个独立的模块。用户之间的各种通信,通过创建不同的进程来完成,可以实现较多的工作。在软件开发过程中也遇到了很多的问题,文件发送的实现花费了较多的时间,在刚开始做的时候,我采用的是发送客户端先将数据发送到服

43、务器,然后再由服务器传回接收客户端。但是每次在发送稍大一点的文件时都会非常的慢,同时丢失一部分数据,导致文件不可用。后来,我研究了聊天软件QQ的文件发送的功能,发现QQ的这项功能在本地计算机之间传送文件特别的迅速,我认为它肯定不是采取我的那种方法,因此我将文件发送改为点对点的方式,这样实现就容易得多,从而成功地解决了这个问题。在今后的工作学习中,我仍会不断的完善它,充实它,使之提供更方便、更准确、更快捷,更全面的服务。由于时间和技术水平的缘故,本系统还存在着许多方面的工作尚未完善。比如,实现的功能较少,只能满足通信软件的一般需求,系统在可靠性上相对较弱,在系统的更进一步的实现阶段,应提高系统的正确性和稳定性,以及系统的容错性。另外,本系统只提供了一些基本的文件操作功能,这些功能还不能反应应用中的全貌,还需要进一步地提高和完善。7.2 展望随着宽带的普及,即时通讯的内涵也开始变化。与过去的纯文本交流不同,新型的即时通信业务融合了视频、音频交流等宽带应用元素。目前各种即时通信除提供了基本的即时互动交流外,还能提供视频、语音通信服务,在短信收发、文件

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号