没有合适的资源?快使用搜索试试~ 我知道了~
基于TCP协议的简单即时通信软件的设计与实现(含源文件).doc
需积分: 5 0 下载量 48 浏览量
2022-07-16
08:31:47
上传
评论
收藏 313KB DOC 举报
温馨提示
试读
21页
基于TCP协议的简单即时通信软件的设计与实现(含源文件).doc
资源推荐
资源详情
资源评论
第 1 页 共 21 页
基于 TCP 协议的网络通信系统的设计与实现
摘 要 :网络通信,由于其具有实时性、跨平台性、成本低、效率高等优点而受到
广泛的使用。设计并实现一个能够处理多用户进行实时、安全的即时通信系统具
有较强的现实意义。即时通信的底层通信是通过 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 T
CP/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 mes
sage.
Key words: Instant Message; File Transfer; Socket; TCP protocol
第 2 页 共 21 页
引言
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。
1。2 国内外研究现状
1.2。1 国外研究现状
当今,国际上对网络通信系统研究的较好的公司有,思科,Sun,Ms 等公司,
思科主要研究的是底层的传输;MS,Sun 公司研究的是应用层。其中 ms 公司凭
借其在操作系统的垄断地位,为了在网络的发展中取得先机,采用了各种各样的
手段。但是,其捆绑的 msn,无论从功能上,还是技术上来说,都不算是非常先
进的。当然,ie,同样也不是很受人青睐,这让人想起了,当年的网景公司,网景
只是生不逢时.MS 不择手段的想打跨网景,可见其对网络的重视。如今,Sun 公司
在网络应用上捷足先登,凭借着 Java,Sun 在网络的应用上领先于 MS.微软,想用
同样的办法搞跨对手,因此它拿出了 Visual c#,来对抗 Java。这些都是在应用层面
的开发工具。应用层上的产品就更显种类繁多。ICQ 几乎是国际上通用的即时通
信工具,由于在我国它的应用不是很广,所以,其原理也很少被介绍。msn,是 MS
的产品,同样在国内没什么市场,所以,对其原理,也很少被讨论过.至于 ie,是在
Visual c++下开发的产品,虽然有严重的安全隐患,不过,至少能在某种程度上
代表当今国际研究的水平。此外,国际上最近出先了新的浏览器 Firefox,其性能
据说是远高于 ie,也许在网络的天下,Ms 又有了更强劲的对手.
1。2.2 国内研究现状
国内在应用层上的网络应用软件目前发展异常的火爆,因为我国有着网络应
用的最大的市场,现在国内网络的基础性建设发展迅速,应用软件也层出不穷,
其中,在游戏的领域中,网络通信的工作做的不错,如联众游戏平台,还有其他
的一些平台,这些平台基本上都是基于 VC++的,用的都是 Socket 通信,但是为
第 3 页 共 21 页
了效率,这些平台没有用 MFC 提供的 CSocket 类,而是直接用 Socket 进行通信.
所以效率上不错。此外,tencent 的即时通信,也是做的很好的,从某中程度上
来说,代表了国内最高的水平。
1.3 本课题的研究方法
本系统采用 C/S(Client/Server)结构进行设计,使用 SQL Server 2000 构建数
据库,并在。NET 环境下使用 Visual C#。net 语言和 SOCKET 套接字开发一个
基于 TCP 协议的简单即时通信软件,实现简单的即时聊天,文件传输等功能。
2 相关技术介绍
2。1 。NET 开发平台及 C#。NET 开发语言
NET 框架是 Microsoft 公司推出的一种全新的开发平台,提供了统一的、面
向对象并且可以扩展的编程类库和完善的集成开发环境,大大简化了应用程序的
开发过程,并且具有良好的移植性和安全性。
微软为了推行。NET 战略,特别为。NET 平台设计了一种语言-—C#.C#是
由 C 和 C++派生而来的一种“简单、流行、面向对象、类型安全”的程序设计
语言,其综合了 Visual basic 的高效率和 C++的强大功能,然而更多的人感觉 C#
更类似 JAVA。
2.2 TCP 协议
2.2。1 TCP/IP 网络协议
协议是对等的网络实体之间通信的规则,可以简单地理解为网络上各计算机
彼此交流的一种“语言"。网络通信协议设计的基本原则是层次化,层和协议的集
合被称为网络体系结构.相邻层之间的接口定义了下层向上层提供的基本操作和
服务,下层向上层提供的服务分两种形式:面向连接的服务和无连接的服务。
计算机网络中已经形成的网络体系结构主要有两个:OSI 参考模型和 TCP/IP
参考模型。TCP/IP 参考模型是因特网(Internet)的基础。和 OSI 的 7 层协议相
比,TCP/IP 协议只有 4 个层次。通常说的 TCP/IP 是一组协议的总称,TCP/IP 实际
上是一个协议族,包括 100 多个相互关联的协议,其中 IP(Internet Protocol, 网际
协议)是网络层最主要的协议;TCP(Transmission Control Protocol,传输控制
协议)和 UDP(User Datagram Protocol,用户数据报协议是传输层中最主要的协
议),一般认为 IP、TCP、UDP 是最根本的三种协议,是其他协议的基础。
2.2。2 TCP-—传输控制协议 :面向连接的通信可以使用可靠通信,在这时候,第
四层协议发送数据接收方的确认,如果未收到数据或者数据被损坏,则请求重新
传输.TCP 协议就使用这种可靠通信. 使用 TCP 协议的应用层协议包括 HTTP、
FTP、SMTP 和 Telnet 等。
现在可以发送和接收消息了.接收消息后,总是返回 ACK 消息。如果在收到
ACK 之前发送方已经超时,则消息将被放到重发队列中以再次发送。
由于它的握手机制,所以 TCP 协议比较复杂并且费时,但此协议在处理数据时
对数据包的传送有保障,从而使得在应用程序协议中不需要再包括该功能。
2.3 套接字
套接字这个术语并没有定义某个协议:它具有两层含义,但两者都与一个协
议相关。第一个含义是套接字编程 API,它最初由伯克利大学为 BSD UNIX 而创
建。BSD 套接字在经过修改后被用作 Windows 环境的编程接口(并且被命名为
WinSock).WinSock API 被包装在 System。Net.sockets 命名空间的。NET 类中。
Windows Sockets 是一个独立于协议的编程接口,用于编写网络应用程序。
2。4 流
第 4 页 共 21 页
2。4.1 流的基本概念
流的概念已经存在很长时间了。流是一个用于传输数据的对象。数据的传输
有两个方向:
1)如果数据从外部源传输到程序中,这就是读取流.
2) 如果数据从程序传输到外部源,这就是写入流。
外部源常常是一个文件,但也不完全都是文件,它还可以是:
1) 网络,使用一定的网络协议与网络上其它计算机或终端交换数据。
2) 一个指定的管道.
3) 一块内存区域.
2。5 同步、异步、阻塞和非阻塞
同步(synchronous):所谓同步方式,就是发送方发送数据包以后,不等接受
方响应,就接着发送下一个数据包.
异步(asynchronous):异步方式就是当发送方发送一个数据包以后,一直等到
接受方响应后,才接着发送下一个数据包。
阻塞(Block):指执行此套接字的网络调用时,直到调用成功才返回,否则
此套节字就一直阻塞在网络调用上,比如调用 StreamReader 类的 Readlin ( )方
法读取网络缓冲区中的数据,如果调用的时候没有数据到达,那么此 Readlin
( )方法将一直挂在调用上,直到读到一些数据,此函数调用才返回.
非阻塞(Unblock):指在执行此套接字的网络调用时,不管是否执行成功,都立
即返回。同样调用 StreamReader 类的 Readlin ( )方法读取网络缓冲区中数据,
不管是否读到数据都立即返回,而不会一直挂在此函数调用上.
在 Windows 网络通信软件开发中,最为常用的方法就是异步非阻塞套接字。平
常所说的 C/S(客户端/服务器)结构的软件采用的方式就是异步非阻塞模式的。
其实在用 C#进行网络编程中,我们并不需要了解什么同步、异步、阻塞和非
阻塞的原理和工作机制,因为在.Net FrameWrok SDK 中已经已经把这些机制给
封装好了。
3。系统总体设计 3。1 需求分析
软件针对局域网内部用户,实现用户间的即时通信.需要分别实现服务器端和
客户端的软件设计。
服务器端负责监听用户连接请求,负责连接数据库存储用户信息,负责发送给
用户好友信息,负责发送心跳报文检查用户在线状态并即时让用户更新好友在新
信息.
客户端发起主动连接,向服务器请求登录或者注册.客户端可以修改昵称,可以
加已知用户为好友(类似于 MSN 的好友添加功能).客户端之间可以发起 P2P 模
式的聊天,可以传送文件。
3。2 系统基本架构
基于 C/S 架构的即时通信软件便于对用户信息进行统一管理和保存,面向特
定的用户,对信息的安全控制能力很强。为了减轻服务器负担,客户端之间的信
息传递是采用 P2P 模式的,服务器只负责用户的注册,登录和用户在线状态的
检验.基本结构如图:
剩余20页未读,继续阅读
资源评论
智慧安全方案
- 粉丝: 3652
- 资源: 59万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功