1华东交通大学课程设计(论文)任务书信息学院专业计算机班级2009-2一、课程设计(论文)题目基于Winsock的简单聊天工具的设计二、课程设计(论文)工作:自2011年6月20日起至2011年6月25日止。三、课程设计(论文)的内容要求:1)基本要求:1、分析Winsock的编程技术,特别是Winsock使用2、分析聊天程序的功能及其相关网络协议3、给出程序流程图和设计方案4、选择开发环境,编译源程序5、给出软件测试文档2)设计要求1、资料提交形式:课程设计报告一份(按学校相关标准、纸质,且严格按照给定模板来组织撰写,特别是课设时间要对、签名要手写、封面一定要用学校买的)、电子文档一份;2、课程设计报告不少于3000字;3、电子文档中必须至少有5份参考资料,压缩后以班为单位交电子版给老师,时间为第18周的周六。4、成绩:出勤占10%、课程设计报告占40%、答辩占20%、参考资料占30%。25、课程设计报告模板写附录。3)工具要求:1、界面清楚易懂;2、程序层次结构清晰。4)实验安排:1、地点:创新大楼东4052、时间:周一、三、四上午8:00--11:30学生签名:2011年6月26日课程设计(论文)评阅意见项目等级优秀良好中等及格不及格课程设计态度评价出勤情况评价任务难度评价工作量饱满评价设计中创新性评价论文书写规范化评价综合应用能力评价综合评定等级评阅人谢昕职称教授2011年6月27日3目录一、任务分析与方案设计..........................................................................................................11.任务分析.........................................................................................................................12.方案设计...........................................................................................................................1二、开发环境与工具..................................................................................................................11.设计环境...........................................................................................................................11.1eclipse开发平台介绍.........................................................................................22.基础知识...........................................................................................................................22.1javaSocket网络编程简介...................................................................................22.2套接字的介绍.........................................................................................................22.3TCP/IP协议简介...................................................................................................3三、关键技术与理论..................................................................................................................31.JAVA编程技术..................................................................................................................32.JavaSocket网络编程接口............................................................................................3四、相关图解及程序..................................................................................................................41.体系结构设计...................................................................................................................42.具体功能模块的分析.......................................................................................................53.程序代码:........................................................................................................................5五、测试及结果分析................................................................................................................10六、心得体会............................................................................................................................12七、参考文献............................................................................................................................12第页共15页1一、任务分析与方案设计1.任务分析随着计算机科学技术的发展,网络越来越深刻地改变着人们生活方方面面。各种基于网络的应用技术在人们的政治、经济、生活等各个方面都发挥着重要的作用。例如QQ、MSN都是基于Internet的即时聊天工具。它们比传统媒介具有数据量大、实时性强、操作简单成本低廉等优点。因而它们在现实生活中受到了广泛的欢迎。然而基于局域网的即时聊天工具却不如人意。为了适应现代信息化,教学局域网应运而生,而教学局域网内的即时通信则显得尤为重要。基于局域网的即时通信软件的核心技术其实与基于Internet的即时通信软件的设计技术是一样的,只是规模比较小。基于Internet的通信工具一般采用TCP或者UDP协议来实现的,开发技术已经非常成熟,它们不仅实现了即时聊天、文件传输等功能,而且还能够实现即时视频、语音聊天功能等。在局域网内,这类软件的设计比在Internet中设计更为简单。因为Internet是网络中的网络,结构更为复杂,遇到的情况要比在局域网中还要多。所以说局域网的聊天工具的设计要相对简单些。而且即时通信是一个终端连往一个即时通信网络的服务。即时通信不同于e-mail在于它的交谈是实时的。大部分的即时通信服务提供了presenceawareness的特性--显示联络人名单,联络人是否在线与能否和联络人交谈。2.方案设计程序采用JAVA编程,利用java强大的基础类库,调用java中界面开发的swing和网络编程的net函数群来完成本次的javasocket(网络套接字)网络即时通信工具的开发。在java中,可以把发送的信息看成是一个一个的对象,当我们利用socket链接把客户端和服务器链接起来以后,他们之间就可以以对象流的形式发送彼此需要通信的信息了。在java的网络编程中,最为核心的就是客户端和服务器相互取得socket的链接,只要能够能够取得链接,其他的工作基本上都是java的面向对象的编程思想去完成一些网络通讯的业务逻辑的处理。二、开发环境与工具1.设计环境开发程序的操作系统:Windows7(在WindowsXP、2000里也可以)编译工具:eclipse程序工程:JAVA工程,Server和Client第页共15页2网络环境:局域网(或互联网上运用,只要安装客户端并且知道服务器端的IP)1.1eclipse开发平台介绍Eclipse是著名的跨平台的自由集成开发环境(IDE)。主要用来Java语言开发。Eclipse的本身只是一个框架平台,但是众多插件的支持,使得Eclipse拥有较佳的灵活性。许多软件开发商都以Eclipse为框架开发自己的IDE。另外由于eclipse是开源的,所以得到了广大用户的认可。Eclipse也于2001年11月被它的开发公司IBM公司贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(EclipseFoundation)管理。2.基础知识2.1javaSocket网络编程简介Socket有两种主要的操作方式:面向连接的和无连接的。面向连接的sockets操作就像一部电话,他们必须建立一个连接和一人呼叫。所有的事情在到达时的顺序与它们出发时的顺序时一样。无连接的sockets操作就像是一个邮件投递,没有什么保证,多个邮件可能在到达时的顺序与出发时的顺序不一样。到底用哪种模式是邮应用程序的需要决定的。如果可靠性更重要的话,用面向连接的操作会好一些.比如文件服务器需要他们的数据的正确性和有序性。如果一些数据丢失了,系统的有效性将会失去。一些服务器,比如间歇性地发送一些数据块,如果数据丢了的话,服务器并不想要再重新发过一次,因为当数据到达的时候,它可能已经过时了.确保数据的有序性和正确性需要额外的操作的内存消耗,额外的费用将会降低系统的回应速率。无连接的操作使用数据报协议。一个数据报是一个独立的单元,它包含了所有的这次投递的信息。把它想象成一个信封吧,它有目的地址和要发送的内容。这个模式下的socket不需要连接一个目的的socket,它只是简单地投出数据报。无连接的操作是快速的和高效的,但是数据安全性不佳。面向连接的操作使用TCP协议。一个这个模式下的socket必须在发送数据之前与目的地的socket取得一个连接。一旦连接建立了,sockets就可以使用一个流接口:打开(-读-写-关闭)。所有的发送的信息都会在另一端以同样的顺序被接收.面向连接的操作比无连接的操作效率更低,但是数据的安全性更高。Java降低了建立一个sockets程序的难度。每一个传输模式都被封装到了不同的类中。面向连接的类将会首先被我们讨论。到底用哪种模式是邮应用程序的需要决定的。如果可靠性更重要的话