优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

网上寻呼QICQ

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:

目录
第 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 think58好,好think58 [来源:http://think58.com]
§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.2 网上寻呼的软件的现况
网上寻呼软件在国外的有icq等,在国内的主要有腾讯的Oicq,还有Ticq,OmO和一些在网页上的即时通讯工具,像Chinaren网站上的WebMaster等等,都做得即美观,且功能强大,Oicq现在拥有非常大的用户群。

[资料来源:www.THINK58.com]

在局域网内的网上寻呼,就我知道的有武汉硕思软件公司的硕思即时通,能够较好的完成局域网上寻呼,聊天,发文件,收E-mail等功能。

[版权所有:http://think58.com]

现在也有很多,在局域网上不使用服务器的通讯软件,这种软件小巧且方便,也能解决一部分问题。但是有服务器的通讯软件,有着不可比拟的优势:可以发送离线消息,不管用户当时是否在线,下次上线时,就可以看到这条消息了。可以保存用户的个人信息或介绍,供人查看。而且,那种通讯软件,是以机器为通讯单元的,而这种寻呼软件是以人为通讯单元。总之,这种软件在局域网上,还是有很大的用途的,为局域网上通讯,带来极大的方便。 think58好,好think58 [资料来源:www.THINK58.com]

虽然说,现在这个软件已经有公司把它开发出来了,我再做也不一定有新意,也未必可以做得更好,但作为毕业设计,也算是对我能力的一个考验和这四个我学习知识的一个检查。而且,我校现在也正在筹备建立校园网,如果这个软件做得比较成功的话,能为校园网上的通讯带来一定的方便,我就很满足了。

copyright think58

[来源:http://think58.com]

[来源:http://think58.com]


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

[资料来源:www.THINK58.com]


• 有权限的人可以发系统广播(或在服务器上发)
• 查看好友信息
• 按姓名或号码查找某人
• 在好友列表中删除某人
• 可以选择在某人的好友中删除自己
• 更改个人信息
• 系统设置
• 给在线好友传文件
• 消息管理器
• 在程序中设定最大,最小窗口尺寸(宽度,高度)
• 主窗口总是浮在最上端
• 速度快,占用资源少 copyright think58 [来源:http://think58.com]

第 4 章  概要设计和详细设计 think58好,好think58

[版权所有:http://think58.com]

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

[资料来源:http://think58.com]

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

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

think58.com

[资料来源:THINK58.com]

[资料来源:http://think58.com]

服务器运行的流程为:
服务器运行后,开启服务,则服务器开始侦听用户请求,如有信息发送过来,首先,发送回确认信息,然后,建立一个线程,处理接受到的数据。在线程里,按照接受到数据的类别,进行相应的处理,如有需要,会向用户发送处理的结果,或成功或失败的消息,处理结束后,线程就结束了。这样,可以实时接受每个用户的请求,不会因为处理一个用户的请求,而忽略了其它用户。 think58 [来源:http://www.think58.com]

服务器端主要是为用户存储必要的信息,协调用户之间的通讯,服务器端的设计,主要在功能上面。服务器端的设计和底层通讯的方法,将是我讲述的重点。 think58.com [资料来源:http://THINK58.com]

客户端的运行流程为:
若有本地用户信息,则取出本地用户信息,显示登陆窗口,若没有,则显示用户注册窗口(在登陆窗口里,也可以选择用户注册)。登陆时,可选择是否隐身,进入系统后,好友列表中,在线的人,将以高亮度显示,并处在列表的上头。不在线的人,将以灰色显示。登陆后,如果有的话,服务器会发来好友给你发送的离线消息或广播消息。如果有好友上线了,就会通知你,好友下线了,你也可以在好友列表中看到,你可能接受到别人给你发送的消息,或广播消息等。根据用户的操作,可以向好友发送消息,查看好友信息,查看在线的人,查找用户,发送广播消息等等功能。 内容来自think58

[资料来源:http://think58.com]

客户端主要是提供给用户一个友好的用户界面,方便用户操作,客户端主要负责从服务器上得到数据后,显示给用户。从服务器得到好友的IP和Port后,就可以直接与好友进行通讯,聊天等等。客户端主要是界面的设计(除了底层通讯的以外),根据不同的要求,向服务器发送各种类型的请求。然后等待服务器的响应。客户端的界面的设计很繁琐,没有详细介绍的必要,所以,我的重点,将放在服务器的设计上。客户端只是简要的说明一下。 [资料来源:http://think58.com]


第 6 章  附录

内容来自think58 [来源:http://www.think58.com]

[资料来源:www.THINK58.com]

§6.1 查错日志 think58

[资料来源:http://THINK58.com]

四月十五日
编写socket的程序,必须在程序启动初始化时调用AfxSocketInit()函数,否则,使用socket通讯,将得不到任何结果,没有任何响应 [版权所有:http://think58.com]

四月十八日
在 *((DWORD*)m_szResponse+m_nrLength)=pData->This;
中,少加一个括号,使响应信息回应不正确:浪费1:30的时间。
shall be :  *((DWORD*)(m_szResponse+m_nrLength))=pData->This;

[资料来源:http://THINK58.com]

四月二十一日
虽然说,为了很编译加快,最好不要头文件中包含头文件,但:
1。如果从一个自己写的类进行继承,则必须包含此类头文件
2。注意,每个实现文件,都要包含Stdafx.h

think58

[来源:http://www.think58.com]

[资料来源:THINK58.com]

四月二十五日
记住,在SQL 语句中,字符串要用' ' ,单引号,使用””双引号,访问数据库将提示SQL错误 本文来自think58

[资料来源:http://think58.com]

四月二十八日
取数据库中的字符串数据时,如果用普通方法
msg.name=*(s1.m_pstring);
如果此字符串为空,则会出异常,
解决方法:
如果是字符串,可用  rs.GetFieldValue(3,msg.name);  or
if(s1.m_pstring!=NULL)msg.name=*(s1.m_pstring); think58 [来源:http://think58.com]

五月八日
if(i==m_nSendMaxIndex)
 while(!m_aSendData[m_nSendMaxIndex])m_nSendMaxIndex--;
should be
while(!m_aSendData[m_nSendMaxIndex]&&m_nSendMaxIndex>0)m_nSendMaxIndex--;
参 考 文 献 copyright think58 [来源:http://think58.com]

[1] 官章全等 《VC60高级编程范例》 电子工业出版社 2001.1
[2] 张海藩.  《软件工程导论》清华大学出版社1998
[3] 谢希仁.  《计算机网络》 电子工业出版社. 1999.4
[4] 王国印 译.Visual C++TM 技术内幕(第二版) 清华大学出版社. 1996.5
[5] David Bennett著  徐军 等译. Visual C++5 开发人员指南.  机械工业出版社.
[6] 木林森 等.  Visual C ++ 5.0 使用与开发.  清华大学出版社.
[7]  汪成为 等.  面向对象分析、设计及应用.  国防工业出版社. 1992
[8]  张海藩.  软件工程导论. 清华大学出版社. 1998.3
否则,将使m_nSendMaxIndex减为负数 think58 [资料来源:THINK58.com]

五月十日
DWORD This=*(buff+nRead-4);
与是有很大不同的,下面一个才正确。上一个取出一个字符数据,然后转化为DWORD赋值给This
DWORD This=*((DWORD*)(buff+nRead-4));
查这个错误,花了2小时,
客户端/服务器程序不大好调试,两个都得运行,一起调试,而且还是多线程的,总之调试起来使麻烦。

本文来自think58 [来源:http://www.think58.com]

[版权所有:http://think58.com]

五月十五日
今天是最糟的一天,全天都在查错,修改一个地方,可能会有许多地方都被牵连到了,都需要修改,在修改时,不免又出现了新的错误,这真是个大问题。
发现了一个非常奇怪的问题,只是一个非常简单,非常。。。。。
忘记写break;

think58.com [资料来源:http://www.THINK58.com]

[资料来源:http://THINK58.com]