计算机科学与技术学院
毕业设计(论文)开题报告
设计(论文)题目: 网络实时通讯软件的设计与实现 学生姓名: 李欣杰 学 号: 08032899 系(部): 专 业: 计算机科学与技术 指导教师: 王 虎
2007 年 3月 19 日
毕 业 设 计(论文)开 题 报 告 1.本课题的研究意义,国内外研究现状、水平和发展趋势 开发的意义: 随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式,如:信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。 但是,对于目前互联网上比较成功的类似系统(如腾讯QQ,微软Live Messenger),其内部协议及实现方法并不对外公开,本人开发这个课题就是希望通过自己平时知识的积累以及对编程语言的掌握,尽量实现一个功能完整,性能稳定的网络即时通讯系统。同时,可以进一步锻炼自己的动手能力和设计能力。 国内外研究现状: 目前,国内外对于即时通讯系统的开发技术已经比较成熟,较成功的产品如腾讯QQ,微软Live Messenger,新浪UC等,都已经拥有非常庞大的用户群。其产品都已经过多年的研究和修改,功能和稳定性都已经比较可靠。及时通讯系统正在改变着我们的日常通信方式,其发展趋势主要有: ●语音传输的互联网化。通过网络的语音传输,最大的特点就是极大的降低了成本。VOIP在美国等国家已经实现了惊人的增长,中国的用户也已经尝到了IP电话的低资费甜头,也许不远的一天,所有的长途都会变成IP传输。即时通信的语音化趋势已经越来越明显; ●通信的多媒体化。视频,音频的多媒体通信理所当然地被人们认为是通信的下一个方向。固网上的可视电话成本太高,移动通信要到3G时代才能实现比较流畅的业务,而在即时通信上,实现却很方便; ●互联网的P2P传输。一些即时通信软件属于P2P(peer-to-peer)的方式。P to P是一种全新的传输方式,对用户来说,它省去了许多传输中间环节,直接在用户之间进行数据传输。用户可以更加快捷的进行信息传输,文件下载。比如非常流行的BT下载,不仅速度奇快,而且下载的内容也无限丰富,最重要的,这些都是免费的。 毕 业 设 计(论文)开 题 报 告
2.本课题的基本内容,预计可能遇到的困难,提出解决问题的方法和措施 基本内容: 本系统将实现局/广域网下Peer-to-Peer即时通讯功能,C/S模式,主要架构分为三个主模块:Client端,Server端 各个Client端用户登陆服务器后可以与加为好友的其他Client用户进行文字、语音及视频通讯,进行文件传输 Server端将运行与Linux系统。处理Client的状态的管理调度。 困难及解决方法: 1、要实现广域网间的即时通讯,首先要解决处于NAT后的用户与Server及其他用户(具有公网IP用户,其他处于NAT之后的用户)之间的通讯连接如何建立和保持。 解决方法:本人参考了Peer-to-Peer (P2P) communication across middleboxes, B. Ford, P. Srisuresh,可利用目前对于穿越NAPT最为成熟和可靠的方法——UDP打洞技术(UDP Hole Punching)。 2、由于此题目将由本人个人开发,基于服务器成本问题,只能将Server端设计为单独PC机运行,考虑到服务器端处理量和稳定性,准备将Server端运行于Linux平台,而且本系统将使用C++作为开发语言,故开发时需要考虑到Server端的平台相关性。 解决方法:准备使用现代C++技术的成果,目前的C++ 准标准库——Boost库做为基础,包括跨平台线程库 Boost.Thread ,跨平台网络库 Boost.Asio 等。 3.本课题拟采用的研究手段(途径)和可行性分析 本课题借鉴国内外较成功的网络即时通讯系统(腾讯QQ,微软MSN等),结合本人查阅的各种资料(如:基于UDP的NAT打洞技术;LINUX下服务器系统的架构等;各种C++ 库的文档)。 具体实现:Client端使用微软MFC和Boost.Asio网络库开发;Server端完全使用标准C++,利用STL和Boost库实现,后台数据库使用本机或单独的MySQL服务器。(考虑网络性能、代码复杂度和统一性,Client端将不直接使用Winsock、MFC Socket及IOCP,而使用Boost.Asio库,因为Boost.Asio在Windows平台的实现就是对IOCP的封装)。