当前位置: 网学 > 设计下载 > Java类作品 > 正文

基于java语言ICq聊天软件的设计|QQ聊天软件

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 佚名 来源: 网络 发布时间: 13/05/09

以下是网学网为您推荐的Java类作品-基于java语言ICq聊天软件的设计|QQ聊天软件,希望本篇文章对您学习有所帮助。

QQ交谈客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn

目录
第 1 章 概论
§1.1 课题的来源及意义 …………………………………………… 1
§1.2 网上寻呼的软件的现况……………………………………… 1
§1.3 面向对象方法与设计简介…………………………………… 2
§1.4 本章小结………………………………………………………… 3
第 2 章 网络通讯程序的设计原理和过程
§2.1 TCP/IP协议 …………………………………………………… 4
§2.2 客户/服务器程序的设计 …………………………………… 6
第 3 章 软件功能与界面需求…………………………………………… 9
第 4 章 概要设计和详细设计
§4.1总体设计概述……………………………………………………10
§4.2服务器数据库的设计 …………………………………………11
§4.3类设计的总体结构 ……………………………………………13
§4.4服务器端的常量定义 …………………………………………15
§4.5客户端的常量定义 ……………………………………………17
§4.6服务器端的底层通讯类的设计………………………………21
§4.7客户端的底层通讯类的设计…………………………………23
§4.8客户/服务器之间的通讯的数据类的设计 ………………25
§4.9发送数据的确认消息的编码方案 …………………………30
§4.10服务器端的分配用户帐号的策略…………………………31
§4.11 服务器的应用程序类CServerApp的设计 ……………31
§4.12 客户端的应用程序类CClientApp的设计 ……………33
§4.13服务器端检查用户是否仍然在线的算法 ………………34
§4.14服务器端处理用户请求的算法……………………………35
§4.15客户端处理服务器发送来数据的算法 …………………40
第 5 章 全文总结与工作展望
§5.1 全文总结…………………………………………………………42
§5.2 工作展望…………………………………………………………42
第 6 章 附录
§6.1 查错日志…………………………………………………………43
§6.2设计中遇到的问题 ……………………………………………46
参 考 文 献……………………………………………………………………47
第 2 章 网络通讯程序的设计原理和过程

对网络通讯程序的设计的原理和过程的透彻理解,是网络通讯程序的前提。本章将简要地介绍一下有关网络通讯程序设计的基本知识。

§2.1 TCP/IP协议
TCP/IP是国际互联网所采用进行网际互连的通信协议。实际所称的TCP/IP协议包括了在国际互联网上应用的一组协议,互联网协议族是此协议族的另一个名字。这个协议族包括几种工作在不同层次上的网络协议,IP互连协议(Internet Protocol),负责主机之间的传输数据。TCP传输控制协议(Transmission Control Protocol),负责在应用程序之间传递数据。UDP用户数据报协议(User Datagram Protocol),提供给用户进程的无连接协议,也负责在应用程序之间无连接传递数据,但不执行正确性检查。ICMP互连网控制报文协议(Internet Control Message Protocol),处理主机间的差错和传送控制。ARP地址解析协议(Address Resolution Protocol),负责将网络层地址转换成链路层地址。RARP反向地址解析协议(Reverse Address Resolution Protocol),负责将链路层地址转换成网络层地址。

TCP/IP协议的核心是传输层协议(TCP、UDP)、网络层协议(IP)和物理接口层,这三层通常在操作系统的内核中实现。TCP/IP网络环境下的应用程序设计是通过网络系统编程界面Socket实现的,Socket提供应用程序与系统内核之间的网络编程接口。协议可以是可靠的可以是不可靠的。可靠的协议意味着当数据通过协议传递时,协议保证数据正确传输。可靠传输包括几个特征。首先,为了确保数据正确传送,协议在通信应用程序之间互相交换确认信息。也就是说,程序每次发送-个报文时,都期望对方发送一个相当于说:“我得到这个报文”的确认信息。如果发送程序没有收到这样一个确认信息,程序将自动重新发送此报文,直到得到应答信息为止。其次,为了确保传输的数据有效,可靠协议在每次传输时,都包含一个或更多的校验和(CRC)。接收计算机重新计算校验和,与收到的校验和进行比较。如果不匹配,就表明在传输过程中发生了错误。

传输控制协议TCP是一个使用校验和、确认信息以及其它可靠数据传输技术的可靠协议。相比之下,不可靠协议不能确保数据正确传输。协议试图传输数据,但不保证成功。而且,不可靠协议在传输失败后,并不通知发送方应用程序。可将不可靠数据传输比作没有返回地址的信件。如果发送地址是锗误的,由于邮递系统不能将信退回给你,所以你就不知道信件有没有送到。即使发送地址是正确的,也不能保证邮递系统不丢失你的信件。

TCP/IP协议组中存在的两个基本数据服务是:字节流服务和数据报服务,使用字节流的协议将信息看作一串字节流进行传输。协议不管要求发送或接收数据的长度和传送数目,只是将数据看作一个简单的字节串流。使用数据报的协议将信息视作一个独立单元进行传输。协议单独发送每个数据报——数据报之间不相互依赖。例如,假设你使用字节流协议发送5个数据段(每个有10字节)和一个包含50字节的数据段(总共100字节)。连接的接收方可以按每次20字节读数据(要读5次)。传输控制协议是字节流协议。

字节流协议不关心每个数据段的长度。如果应用程序使用字节流协议发送数据,则协议能够保证连接的另一端按照发送的顺序接收数据。相比之下,传输到同一目的地的多个数据报可能不会按发送顺序到达。如果接收方应用程序要求数据顺序一致,应用程序必须在数据到达后,校对这些数据。用户数据报协议和互连网协议使用数据报传输数据。数据报类似于信件。如果你在同一天给同一个人邮寄两封信,你无法知道那个人先收到那封信。同样,如果连续两天给两个人邮信,你也不能知道哪封信先收到。收到信的顺序和发送顺序可能相反。

在TCP/IP术语中,端口类(Port)似于IP地址,IP地址与主机地址是相联系的,端口和协议相联系。IP数据报保存目的和源IP地址,同样传输协议也保存源和目的端口号。如果端口这个概念对你来说很陌生,请考虑计算机上的硬件端口。你可能编写过往硬件端口送数据的程序。例如为了打印,如果没有其它程序的话,必须向串或并端口发送数据。PC机给它的端口命名和编号。

例如,PC机的并行打印端口称为LPTl和LPT2,串行端口称为COM1和COM2。在Internet上,网络只是简单地对协议端口编号。在PC机,LPT1表示并行端口1。成千个PC机应用程序使用此方案。多年来,程序员编写PC程序时都假定LPT1表示并行打印端口1。同样,程序员将每个Internet协议端口与一个特定的应用程序和功能联系在一起。

Internet包括像FTP、Telnet和Mail这样广泛使用的应用程序采用的应用协议,在Internet上,这些应用程序使用一种叫做“通用口分配”的端口。通用口分配是特定应用程序广泛使用的一个协议端口。像PC程序员使用打印端口LPT1用于打印,Internet程序员也对具体应用程序使用许多协议端口。例如,平凡文件传输协议(FTP)的通用口分配是端口号21的。Telnet的通用口分配是端口号23。

§2.2 客户/服务器程序的设计

客户机/服务器模型也是一种网络模型,但与前述的模型不同,它并不是定义了网络的层次结构,而是描述了一种网络程序运行的方式。

客户及/服务器模型将网络应用程序分为客户和服务器两部分。客户方对服务器方发送信息请求,服务器方对其做出相应回答,提供服务。在TCP/IP网络应用中,多数网络应用程序是使用客户/服务器模型设计的。服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户程序提出了请求信息。此时,服务程序被"惊醒"并且为客户提供服务,对客户的请求作出适当的反应。虽然基于连接的服务是设计客户/服务器应用程序的标准,但有些服务也是可以通过数据报Socket提供的。

通常,网络应用程序包含两个独立的应用程序:客户程序和服务器程序。但是,也可以设计同时完成这两种功能的程序,例如,一些服务器程序如果不能完成一个服务请求时,它将转而充当客户程序,向其它服务器程序请求信息。这方面的一个典型例子就是提供Internet从域名到IP地址映射服务的DNS服务器。

为了充分理解TCP/IP协议族,必须理解几个重要术语。这些术语指出了两个TCP/IP传输协议:用户数据包协议(UDP)和传榆控制协议(TCP)之间的区别。这些术语进一步描述了与网络连接、协议可靠性以及数据服务有关的协议特性。
当建立服务器程序时,应该将服务器程序设计成等候客户的请求。你知道,TCP传输层通过协议端口和应用程序 (像服务器和客户)通信,也就是说,为了按收客户请求,服务器程序必须对传输层的一个特定协议端口进行侦听。当服务器配置socket接口时,它使用bind()函数让socket执行体登记一个协议端口。也就是说,程序告诉socket执行体使用哪-个协议端口进行数据传送。Socket执行体接着告诉传输层某个特定协议端口已被使用,并将其收到的所有数据传送给Socket API。

使用无连接协议的程序和使用面向连接协议的服务器程序之间的主要相似之处是它们都必须对一个协议端口进行侦听。例如,无连接和连接服务器程序必须在协议端口侦听客户请求。同样,由于无连接客户程序没有和远地主机建立直接连接,所以它也必须对协议端口进行侦听,以便接收以对它服务请求产生的数据报应答。Socket API中的bind()函数让程序将一个本地地址(包括主机地址和协议端口)和一个Socket联系起来。
下面程序行显示了一个典型的函数调用:
result=bind ( socket_handle, local_structure, socket_address, address_ length)
无连接客户程序也对一个协议端口进行侦听。使用无连接协议的程序不和远地主机建立直接连接。无连接客户程序使用数据报发送网络服务请求,它不建立点到点连接。因此无连接客户程序必须在一个协议端口,对应答数据报进行侦听。与服务器程序一样,无连接客户程序也使用bind函数让Socket执行体登记协议端口。也就是说,类似服务器程序,无连接客户程序告诉Socket执行体使用哪个协议端口进行数据传输。Socket执行体处理传输层内UDP软件模块和客户程序之间的接口。
 

 

 


第 3 章 软件功能与界面需求
提供基于TCP/IP网络的即时消息传送、消息广播、实时聊天、文件传输等功能。 具体列举如下:
• 支持多账号
• 可以同时发送同一个消息给多人,通过输入这些人的号码列表或姓名列表
• 可以同时发送一个消息给所有好友
• 有权限的人可以向所有用户发送“消息广播”,便于消息的发布
• 即使用户不在线,也能通过服务器发送离线消息
• 提供消息、聊天的历史记录,方便对信息的查看和管理
• 提供查看在线的人的功能
• 提供按ID或姓名查找用户的功能,添加用户方便
• 小窗口显示,不占用屏幕很大的空间,
• 支持热键调出后台的应用程序。
• 应用程序运行后,在任务栏右边生成一个图标,单击弹出在线状态 菜单,双击显示应用程序窗口,右击弹出主菜单。
• 支持隐身登陆,可以看到在线的朋友,朋友却不知道你上线了
• 可以实时显示用户的状态和随时改变自己的状态
• 提供了自动弹出消息
• 好友上线通知
• 好友下线更新
• 有权限的人可以发系统广播(或在服务器上发)
• 查看好友信息
• 按姓名或号码查找某人
• 在好友列表中删除某人
• 可以选择在某人的好友中删除自己
• 更改个人信息
• 系统设置
• 给在线好友传文件
• 消息管理器
• 在程序中设定最大,最小窗口尺寸(宽度,高度)
• 主窗口总是浮在最上端
• 速度快,占用资源少

第 4 章 概要设计和详细设计

本章将论述软件系统的面向对象设计过程。用Visual C++语言在Windows环境下编程实现。

§4.1总体设计概述
采用客户端——服务器模型,使用从MFC类中的CAsyncSocket类的派生类进行实现底层通讯,底层利用UDP数据报协议进行通讯,这样,便于客户端之间的直接通讯,也可以高效的传送消息。因为使用UDP协议进行通讯,所以要自己控制其可靠性。我每发送一个数据,接受方接受到数据后,会发回一个响应信息,发送方在一个超时时间内,收到响应信息,就表示发送数据成功,若没有收到,就表示发送失败,会按用户指定的次数N,重试N次,如果N次都失败,就返回发送数据失败。当然,发回来的确认信息也可能丢失,但确认信息很短,相对来说,丢失的机率会小一些,是一个折中的办法。

为了保存用户信息和好友信息及一些相关数据,服务器使用到数据库技术。服务器的数据库采用的是ODBC的ACCESS数据源,服务器访问数据库,用的是MFC中的CDatabase和CRecordset,因为,对数据库的操作简单,服务器端,我只要功能,不需做界面,所以使用Sql语句直接访问数据库,已经足够满足要求了。

 


 

 

本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT

本文选自计算机毕业设计http://myeducs.cn
论文文章部分只是部分简介,如需了解更多详情请咨询本站客服!QQ交谈QQ3710167

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号