基于TCP协议的简单即时通信软件的设计与实现
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
摘 要
即时通信(Instant Message),由于其具有实时性、跨平台性、成本低、效率高等优点而受到广泛的使用。设计并实现一个能够处理多用户进行实时、安全的即时通信系统具有较强的现实意义。即时通信的底层通信是通过SOCKET套接字接口实现的。当前的主流UNIX系统和微软的WINDOWS系统都在内核提供了对SOCKET字接口的支持。使用这个统一的接口,可以编写一个可移植的TCP/IP通信程序。使信息能够在INTERNET上可靠的传输。
本文设计并实现了基于局域网内的简单即时通信系统,系统采用C/S模式,底层通信通过SOCKET套接字接口实现,服务器负责客户端的登录验证,好友信息的保存和心跳报文的发送。客户端采用P2P方式实现消息传递,并能实现文件的传输。本文首先讨论了同步套接字,异步套接字,多线程并发执行任务等;然后阐述了客户端、服务器如何使用XML序列化的消息进行通信。(所有权: 毕业设计网 )
关键词:即时通信;文件传输;套接字;TCP协议
The Design and Implementation of Simple Instant Message Software Based on TCP Protocol
Abstract
Instant messages have several advantages such as real-time, cross-platform, cheap and efficient. To design a Multi-user IM (instant message) architecture is very important in both theory and realism. Instant message based on TCP/IP protocol that is realized by socket interface. Almost all UNIX operation systems and Microsoft's windows operation systems provide support of socket in the kernel. Using the uniform interface, we can develop a portable program of TCP/IP, which help us transfer information in Internet safely and credibly.
[资料来源:http://www.THINK58.com]
The system uses the client/server(C/S) mode. The server takes the responsibility of the login message of client, the saving of friend message and Message heartbeat. The transmission of the basic messages of the customer end will be designed on P2P architecture. This thesis explains how the client and server communicate via serializing XML message. [资料来源:http://think58.com]
Key words: Instant Message; File Transfer; Socket; TCP protocol
即时通信是一个终端连往一个即时通信网路的服务。即时通信不同于e-mail在于它的交谈是实时的。大部分的即时通信服务提供了presence awareness的特性──显示联络人名单,联络人是否在在线与能否与联络人交谈。
最早的即时通信软件是ICQ,ICQ是英文中I seek you的谐音,意思是我找你。四名以色列青年于1996年7月成立Mirabilis公司,并在11月份发布了最初的ICQ版本,在六个月内有85万用户注册使用。
在因特网上受欢迎的即时通信服务包含了MSN Messenger、AOL Instant Messenger、Yahoo! Messenger、NET Messenger Service、Jabber、ICQ与QQ。 这些服务有赖于许多想法更久的(与普遍)的在线聊天媒介,如Internet Relay Chat一样知名。
1970年代早期,一种更早的即时通信形式是柏拉图系统(PLATO system)。之后在1980年代,UNIX/Linux的交谈实时信息被广泛的使用于工程师与学术界,1990年代即时通信更跨越了因特网交流。1996年11月,ICQ是首个广泛被非UNIX/LINUX使用者用于因特网的即时通信软件。在ICQ的介绍之后,同时在许多地方有一定数量的即时通信方式发展,且各式的即时通信程序有独立的协议,无法彼此互通。这引导使用者同时执行两个以上的即时通信软件,或者他们可以使用支持多协议的终端软件,如Gaim、Trillian或Jabber。
近年来,许多即时通信服务开始提供视讯会议的功能,网络电话(VoIP),与网络会议服务开始整合为兼有影像会议与实时信息的功能。于是,这些媒体的分别变的越来越模糊。
协议是一系列的步骤,它包括双方或者多方,设计它的目的是要完成一项任务。即时通信协议,参与的双方或者多方是即时通信的实体。协议必须是双方或者多方参与的,一方单独完成的就不算协议。这样在协议动作的过程中,双方必须交换信息,包括控制信息、状态信息等等。这些信息的格式必须是协议参与方同意并且遵循的。好的协议要求清楚,完整,每一步都必须有明确的定义,并且不会引起误解;对每种可能的情况必须规定具体的动作。
有许多的 IM 系统,如 AOL IM、Yahoo IM 和 MSN IM,它们使用了不同的技术,而且它们互不兼容。为了创建即时通信的统一标准,人们经过了多次尝试:IETF 的对话初始协议(SIP)和 即时通信对话初始协议和表示扩展协议(SIMPLE)、应用交换协议(APEX)、显示和即时通信协议(PRIM)及基于 XML 且开放的可扩展通信和表示协议(XMPP)协议(常称为 Jabber 协议)。人们多次努力,试图统一各大主要 IM 供应商的标准(AOL、Yahoo 及 Microsoft),但无一成功,且每一种 IM 仍然继续使用自己所拥有的协议。
本系统目的在于实现一个简单的即时通信过程,没有必要采用通用的比较复杂的即时通信协议,因此使用了简单定义的XML标记定义来规范即时通信的各种网络信息,在网络中传输序列化的XML语言。(所有权: 毕业设计网 )
功能模块设计
CLIENT:
1. 注册:
(1) 可以完成客户端注册,客户端可以通过填写信息进行注册,信息被发送到服务器端。
2. 登录:
(1) 客户可以输入账号和密码进行登录,客户端会发送登录信息等待服务器响应,登录成功后会发出登录成功信息并刷新好友列表。
3. 修改:
(1) 密码修改:应该有密码修改功能
(2) 信息修改:可以更改一些注册信息
4. 通信:
(1) 即时聊天模块:客户端与客户端之间建立线程进行即时聊天,也包含有简单的对称加解密算法功能。
(2) 好友列表:可以对好友列表进行添加删除等动作
5. 文件传输:
(1) 文件传输:文件传输功能
SERVER:
1. 注册回应:对客户端传送的注册信息进行判断。
(1) HASH加密:对用户的账号和密码信息进行HASH加密
(2) 重复用户检查:将加密后信息与已存在账号进行比较,检查是否账号已存在,如果存在就返回错误信息 [资料来源:http://www.THINK58.com]
(3) 注册成功:将可成功注册的用户账号和密码写入数据库内,并向客户端返回成功信息
2. 修改回应:
(1) 对密码和信息修改请求进行判断,执行和返回修改成功信息
3. 登录回应:
(1) 对登录的账号和密码进行加密检查后发回正确或错误情况,并记录上线信息
(2) 好友列表发送:给成功登录的账号发送好友列表及好友上线信息
(3) 上线信息发送:给成功登录的账号的好友发送在线信息(包括IP,端口等等信息)
4. 在线情况:
(1) 对登录,在线,离线的用户情况进行统计,记录和通知
(2) 心跳测试:每隔一段时间发送报文测试用户是否因意外原因离线
(3) 情况记录:将用户登录时间,IP,下线时间等信息记录入数据库(所有权: 毕业设计网 )
[资料来源:www.THINK58.com]
目 录
1 引言 1
1.1 课题背景 1
1.2 国内外研究现状 1
1.2.1 国外研究现状 1
1.2.2 国内研究现状 2
1.3 本课题研究的意义 2
1.4 本课题的研究方法 2
2 相关技术介绍 2
2.1 .NET开发平台及C#.NET开发语言 2
2.2 TCP协议 3
2.2.1 TCP/IP网络协议 3
2.2.2 TCP——传输控制协议 3
2.3 套接字 4
2.4 流 4
2.4.1 流的基本概念 4
2.4.2 .NET中的流 4
2.5 同步、异步、阻塞和非阻塞 5
(所有权: 毕业设计网 )
2.6 C/S模型 5
2.7 即时通信协议 6
3 系统总体设计 7
3.1 需求分析 7
3.2 系统基本架构 7
3.3 功能模块设计 7
3.4 逻辑图 9
3.5 数据库设计 10
3.5.1 实体关系图 10
3.5.2 详细列表 10
4 系统实现 11
4.1 使用XML定义的即时通信协议 11
4.1.1 信息结构MESSAGE.CS&UMESSAGE.CS 11 [来源:http://www.think58.com]
4.1.2 数据结构FriendStruct 12
4.2 数据库连接类 14
4.3 服务器端 15
4.3.1 同步套接字网络监听 15
4.3.2 多线程 19
4.3.3 计时器 19
4.4 客户端 20
4.4.1 同步套接字客户端 20
4.4.2 采用异步套接字的文件传输 23
结 论 25
参考文献 26
致 谢 27
声 明 28
参考文献
[1] Tobin. Titus, Fabio Claudio Ferracchiati. C#线程参考手册[M].王敏译.北京:清华大学出版社,2003。
[2] 黄承安,谢东文,许聪. C#网络应用案例导航[M].北京:中国铁道出版社,2003。
[3] Andrew Krowczyk, vinod Kumar. .NET网络高级编程[M].北京:清华大学出版社,2003。
[4] 周存杰. Visual C# .NET网络核心编程[M].北京:清华大学出版社,2002。
[5] 方睿,吴四九,刁仁宏. 网络数据库原理及应用[M].四川:四川大学出版社,2005。
[6] 李文志,申剑,卢方国,柳正青,王宏,陈建伟. 在.NET框架下开发一个即时通信系统[J].现代计算机.2004(2):68-72。
[7] 王跃. INTERNET上大规模用户即时通信方法研究[D].北京:北京工业大学[硕士论文],2004。
[来源:http://think58.com]
[资料来源:http://THINK58.com]