目录
第 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 章 概要设计和详细设计http://www.16sheji8.cn/
§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
第 1 章 概论http://www.16sheji8.cn/
§1.1 课题的来源及意义
在网络无所不在的今天,在Internet上,有icq,oicq,ticq等网上寻呼软件,极大程度上方便了处于在世界各地的友人之间的相互联系,也使世界好象一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可以给你的朋友发信息,不管对方是否也同时在线,只要知道他有号码。
现在,企业、机关、学校都建立起了自己的局域网,在局域网,虽然可以通过文件共享的方式进行通讯,但单单使用这种方式,是非常不方便的,首先,在局域网里的网上邻居里,只能看到机器名,不清楚对方是谁,也不知道对方机器里有什么资源可以共享,而且,当局域网的机器很多时,这种方式更加麻烦。于是,就想到做一个在局域网里的icq,在局域网里,我们可以通过它,实现在局域网里方便的联络,进行文件传输,消息的发布,自己共享内容的简介等。在学校建立起校园网里,这软件可以起到方便同学之间,教师之间,师生之间的相互联络,这样,不用上Internet,可以节省资源,在学校这个大环境里,就可以同学之间联系,联络感情,促进同学之间的友谊,学生可以通过它来与不同寝室的同学,教师讨论问题。并能最大限度地利用现有的网络资源,极大地提高工作效率。为了适应校园网的建设,实现校园网内进行消息发布,学生交流,师生交流,网上作业等功能。
§1.2 网上寻呼的软件的现况
网上寻呼软件在国外的有icq等,在国内的主要有腾讯的Oicq,还有Ticq,OmO和一些在网页上的即时通讯工具,像Chinaren网站上的WebMaster等等,都做得即美观,且功能强大,Oicq现在拥有非常大的用户群。
在局域网内的网上寻呼,就我知道的有武汉硕思软件公司的硕思即时通,能够较好的完成局域网上寻呼,聊天,发文件,收E-mail等功能。http://www.16sheji8.cn/
现在也有很多,在局域网上不使用服务器的通讯软件,这种软件小巧且方便,也能解决一部分问题。但是有服务器的通讯软件,有着不可比拟的优势:可以发送离线消息,不管用户当时是否在线,下次上线时,就可以看到这条消息了。可以保存用户的个人信息或介绍,供人查看。而且,那种通讯软件,是以机器为通讯单元的,而这种寻呼软件是以人为通讯单元。总之,这种软件在局域网上,还是有很大的用途的,为局域网上通讯,带来极大的方便。
虽然说,现在这个软件已经有公司把它开发出来了,我再做也不一定有新意,也未必可以做得更好,但作为毕业设计,也算是对我能力的一个考验和这四个我学习知识的一个检查。而且,我校现在也正在筹备建立校园网,如果这个软件做得比较成功的话,能为校园网上的通讯带来一定的方便,我就很满足了。
§1.3面向对象方法与设计简介
传统的软件工程方法有生命周期方法和快速原型法。
面向对象方法学是一种全新的软件工程方法,其出发点和基本原则是尽可能模拟人类习惯的思维方式,把构成客观世界的实体抽象为对象。概括地说,面向对象方法学有四个要点:
1.认为客观世界是由各种对象组成的,复杂的对象可以由比较简单的对象以某种方式组合而成;
2.把所有对象都划分成各种对象类,每个对象类可以定义一组数据和方法;
3.按照子类和父类的关系,把若干对象类组成一个层次结构的系统;
4.对象彼此之间仅能通过传递消息互相联系。
用面向对象方法学开发的软件有以下优点:http://www.16sheji8.cn/
1.与人类习惯的思维方法一致;
2.稳定性好;
3.可重用性好;
4.可维护性好。
§1.4本章小结
随着计算机应用技术的日益普及,网络也遍及到我们生活的每个角落,很好的利用这人资源,将为我们的工作和学习,带来极大的方便和提高工作效率,所以,开发一个局域网里的C/S通讯软件,是十分必要。
由于采用面向对象方法开发软件具有明显的优点,本系统将采用面向对象方法进行开发。由于采用面向对象的系统模型可以使整个软件系统的结构变得更加灵活,本系统的结构模型将采用面向对象的系统模型,采用VC++6.0这个可视化开发工具进行编码。
第 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),负责将链路层地址转换成网络层地址。http://www.16sheji8.cn/
TCP/IP协议的核心是传输层协议(TCP、UDP)、网络层协议(IP)和物理接口层,这三层通常在操作系统的内核中实现。TCP/IP网络环境下的应用程序设计是通过网络系统编程界面Socket实现的,Socket提供应用程序与系统内核之间的网络编程接口。协议可以是可靠的可以是不可靠的。可靠的协议意味着当数据通过协议传递时,协议保证数据正确传输。可靠传输包括几个特征。首先,为了确保数据正确传送,协议在通信应用程序之间互相交换确认信息。也就是说,程序每次发送-个报文时,都期望对方发送一个相当于说:“我得到这个报文”的确认信息。如果发送程序没有收到这样一个确认信息,程序将自动重新发送此报文,直到得到应答信息为止。其次,为了确保传输的数据有效,可靠协议在每次传输时,都包含一个或更多的校验和(CRC)。接收计算机重新计算校验和,与收到的校验和进行比较。如果不匹配,就表明在传输过程中发生了错误。
传输控制协议TCP是一个使用校验和、确认信息以及其它可靠数据传输技术的可靠协议。相比之下,不可靠协议不能确保数据正确传输。协议试图传输数据,但不保证成功。而且,不可靠协议在传输失败后,并不通知发送方应用程序。可将不可靠数据传输比作没有返回地址的信件。如果发送地址是锗误的,由于邮递系统不能将信退回给你,所以你就不知道信件有没有送到。即使发送地址是正确的,也不能保证邮递系统不丢失你的信件。
TCP/IP协议组中存在的两个基本数据服务是:字节流服务和数据报服务,使用字节流的协议将信息看作一串字节流进行传输。协议不管要求发送或接收数据的长度和传送数目,只是将数据看作一个简单的字节串流。使用数据报的协议将信息视作一个独立单元进行传输。协议单独发送每个数据报——数据报之间不相互依赖。例如,假设你使用字节流协议发送5个数据段(每个有10字节)和一个包含50字节的数据段(总共100字节)。连接的接收方可以按每次20字节读数据(要读5次)。传输控制协议是字节流协议。http://www.16sheji8.cn/
字节流协议不关心每个数据段的长度。如果应用程序使用字节流协议发送数据,则协议能够保证连接的另一端按照发送的顺序接收数据。相比之下,传输到同一目的地的多个数据报可能不会按发送顺序到达。如果接收方应用程序要求数据顺序一致,应用程序必须在数据到达后,校对这些数据。用户数据报协议和互连网协议使用数据报传输数据。数据报类似于信件。如果你在同一天给同一个人邮寄两封信,你无法知道那个人先收到那封信。同样,如果连续两天给两个人邮信,你也不能知道哪封信先收到。收到信的顺序和发送顺序可能相反