项目报告
基于 ASP.NET 的 TCP 协议的简单即时通信软件系统
即时通信(Instant Message),由于其具有实时性、跨平台性、成本低、效率高
等优点而受到广泛的使用。设计并实现一个能够处理多用户进行实时、安全的即时
通信系统具有较强的现实意义。即时通信的底层通信是通过 SOCKET 套接字接口实现
的。当前的主流 UNIX 系统和微软的 WINDOWS 系统都在内核提供了对 SOCKET 字接口
的支持。使用这个统一的接口,可以编写一个可移植的 TCP/IP 通信程序。使信息能
够在 INTERNET 上可靠的传输。
本文设计并实现了基于局域网内的简单即时通信系统,系统采用 C/S 模式,底
层通信通过 SOCKET 套接字接口实现,服务器负责客户端的登录验证,好友信息的保
存和心跳报文的发送。客户端采用 P2P 方式实现消息传递,并能实现文件的传输。
本文首先讨论了同步套接字,异步套接字,多线程并发执行任务等;然后阐述了客
户端、服务器如何使用 XML 序列化的消息进行通信。
即时通信;文件传输;套接字;TCP 协议
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.
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.
Key words: Instant Message; File Transfer; Socket; TCP protocol
目 录
论文总页数:28 页
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
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 页 共 28 页
1 引言
1.1 课题背景
即时通信是一个终端连往一个即时通信网路的服务。即时通信不同于 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),与网
络会议服务开始整合为兼有影像会议与实时信息的功能。于是,这些媒体的分别变
的越来越模糊。
1.2 国内外研究现状
1.2.1 国外研究现状
当今,国际上对网络通信系统研究的较好的公司有,思科,Sun,Ms 等公司,
思科主要研究的是底层的传输;MS,Sun 公司研究的是应用层。其中 ms 公司凭借其
在操作系统的垄断地位,为了在网络的发展中取得先机,采用了各种各样的手段。
但是,其捆绑的 msn,无论从功能上,还是技术上来说,都不算是非常先进的。当
然,ie,同样也不是很受人青睐,这让人想起了,当年的网景公司,网景只是生不
逢时。MS 不择手段的想打跨网景,可见其对网络的重视。如今,Sun 公司在网络应
用上捷足先登,凭借着 Java,Sun 在网络的应用上领先于 MS。微软,想用同样的办