ASP.NET基于TCP协议的简单即时通信软件的设计与实现.doc

JSJ01-054@ASP.NET基于TCP协议的简单即时通信软件的设计与实现(源代码+论文)

收藏

资源目录
跳过导航链接。
JSJ01-054@ASP.NET基于TCP协议的简单即时通信软件的设计与实现(源代码+论文).zip
JSJ01-054@ASP.NET基于TCP协议的简单即时通信软件的设计与实现(源代码+论文)
ASP.NET基于TCP协议的简单即时通信软件的设计与实现.doc---(点击预览)
TCP
bin
Debug
obj
Debug
App.ico
AssemblyInfo.cs
Form1.cs
Form1.resx
FriendStruct.cs
TCP.csproj
TCP.csproj.user
TCP.sln
TCP.suo
UMessage.cs
UserData.cs
TCP-Client11
新建 文本文档.txt---(点击预览)
bin
Debug
Infinity.Networking
bin
obj
AssemblyInfo.cs
ClientBase.cs
ClientInfo.cs
Delegates.cs
Infinity.Networking.csproj
Infinity.Networking.csproj.user
INPClient.cs
INPServer.cs
NetworkEventArgs.cs
ServerBase.cs
obj
Debug
App.ico
AssemblyInfo.cs
EncryptClass.cs
FMessage.cs
Form1.cs
Form1.resx
Form3.cs
Form3.resx
FriendAdd.cs
FriendAdd.resx
FriendChange.cs
FriendChange.resx
FriendManager.cs
FriendManager.resx
FriendStruct.cs
GetAccout.cs
GroupAdd.cs
GroupAdd.resx
GroupManager.cs
GroupManager.resx
GroupRename.cs
GroupRename.resx
Message.cs
TCP-Client.csproj
TCP-Client.csproj.user
TCP-Client.sln
TCP-Client.suo
UMessage.cs
压缩包内文档预览:(预览前20页/共33页)
预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图 预览图
编号:507967    类型:共享资源    大小:738.53KB    格式:ZIP    上传时间:2015-11-10 上传人:QQ28****1120 IP属地:辽宁
12
积分
关 键 词:
毕业设计计算机
资源描述:
JSJ01-054@ASP.NET基于TCP协议的简单即时通信软件的设计与实现(源代码+论文),毕业设计计算机
内容简介:
添加好友OKnts分类号: TP393.0 U D C: D10621-408-(2007) 6051-0 密 级:公 开 编 号: 2003031287 成都信息工程学院 学位论文 基于 TCP协议的简单即时通信软件的设计与实现 论文作者姓名: 江海涛 申请学位专业: 计算机科学与技术 申请学位类别: 工学 学士 指导教师姓名(职称): 王敏 论文提交日期: 2007 年 06 月 01 日 nts基于 TCP协议的简单即时通信软件的设计与实现 摘 要 即时通 信 (Instant Message), 由于其具有 实时性、跨平台性、成本低、效率高等优点 而受到广泛的使用。设计并实现 一个能够处理 多用 户进行实时、安全的即时通 信系统 具有较强的现实意义。 即时 通信 的底层 通信是 通过 SOCKET 套接 字接口实现的 。当前的主流 UNIX 系统和微软的 WINDOWS 系统都在内核提供了对 SOCKET 字接口的支持。使用这个统一的接口,可以编写一个可移植的 TCP/IP 通信 程序。使信息能够在 INTERNET 上可靠的传输。 本文设计并实现了基于局域网内的简单即时通信系统,系统采用 C/S 模式,底层通 信通过 SOCKET 套接字接口实现,服务器负责客户端的登录验证,好友信息的保存和心跳报文的发送。客户端采用 P2P 方式实现消息传递,并能实现文件的 传输 。本文首先讨论了同步套接字,异步套接字,多线程并发执行任务等;然后阐述了客户端、服务器如何使用 XML 序列化的消息进行 通信 。 关键词: 即时通信;文件传输;套接字 ; TCP 协议 ntsThe 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 Microsofts 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 nts目 录 论文总页数: 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 数据库设计 .9 3.5.1 实体关系图 .9 3.5.2 详细列表 . 10 4 系统实现 . 11 4.1 使用 XML 定义的即时通信协议 . 11 4.1.1 信息结构 MESSAGE.CS&UMESSAGE.CS . 11 nts4.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 nts 第 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。微软,想用同样的 办nts 第 2 页 共 28 页 法搞跨对手,因此它拿出了 Visual c#,来对抗 Java。这些都是在应用层面的开发工具。应用层上的产品就更显种类繁多。 ICQ 几乎是国际上通用的即时 通信 工具,由于在我国它的应用不是很广,所以,其原理也很少被介绍。 msn,是 MS的产品,同样在国内没什么市场,所以,对其原理,也很少被讨论过。至于 ie,是在 Visual c+下开发的产品,虽然有严重 的安全隐患,不过,至少能在某种程度上代表当今国际研究的水平。此外,国际上最近出先了新的浏览器 Firefox,其性能据说是远高于 ie,也许在网络的天下, Ms又有了更强劲的对手。 1.2.2 国内研究现状 国内在应用层上的网络应用软件目前发展异常的火爆 ,因为我国有着网络应用的最大的市场,现在国内网络的基础性建设发展迅速,应用软件也层出不穷,其中,在游戏的领域中,网络 通信 的工作做的不错,如联众游戏平台,还有其他的一些平台,这些平台基本上都是基于 VC+的,用的都是 Socket 通信,但是为了效率,这些平台没有用 MFC 提供的 CSocket 类,而是直接用 Socket 进行通信。所以效率上不错。此外, tencent 的即时 通信 ,也是做的很好的,从某中程度上来说,代表了国内最高的水平。 1.3 本课题研究的意义 本课题目标是实现局域网用户之间的即时交流和文件传输,通过基础的网络SOKET 编程,为局域网内部的即时 通信 提供一个简单而较安全的解决方案。 1.4 本课题的研究方法 本系统采用 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。nts 第 3 页 共 28 页 事实上 C#融合了大量的 JAVA 思想, C#是 .NET 的关键性语言,它是整个 .NET 平台 的基础。与 C#相比, .NET 所支持的其它语言显然是配角,包括 VC+.NET 在内。但是微软并没有打算放弃 VC+.NET,相反,微软对 VC+.NET 有着另一番独特的打算,VC+.NET 的定位与 C#不完全重合, VC+.NET 应用范围仍强于 C#,这一点无论对微软公司还是软件业应用现状都非常重要。 可见 +.NET 在 NET 框架中已经退化成了底层的语言了,就像 C+之前 的标准 C语言一样,以后将只有开发底层或桌面程序的程序员使用它。它虽然仍旧强大,但是已经不是主流,而主流就是 C#语言。 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 等。 TCP 要求在发送数据之前必须打开连接。服务器应用程序必须执行一个称作被动打开( passive open)的操作,以利用一个已知的端口号创建一个链接,这是,服务器并不是对网络进行呼叫,而是侦听并等待引入的请求 。客户应用程序必须执行一 个主动打开( active open),为此,它向服务器应用程序发送一个同步序列号nts 第 4 页 共 28 页 ( SYN)以标识连接。客户应用程序可以将动态端口号作为本地端口使用。服务器必须向客户发送一个确认( ACK)以及服务器的序列号( SYN)。随后,客户回复一个ACK,这样就建立了链接。 现在可以发送和接收消息了。接收消息后,总是返回 ACK 消息。如果在收到 ACK之前发送方已经超时,则消息将被放到重发队列中以再次发送。 由于它的握手机制,所以 TCP 协议比较复杂并且费时,但此协议在处理数据时对数据包的传送有保障,从而使得在应用程序协议中不 需要再包括该功能。 2.3 套接字 套接字这个术语并没有定义某个协议:它具有两层含义,但两者都与一个协议相关。第一个含义是套接字编程 API,它最初由伯克利大学为 BSD UNIX 而创建。 BSD套接字在经过修改后被用作 Windows 环境的编程接口(并且被命名为 WinSock)。WinSock API 被包装在 System.Net.sockets 命名空间的 .NET 类中。 Windows Sockets 是一个独立于协议的编程接口,用于编写网络应用程序。 套接字的第二层含义表示一个用于在进程间进行通信的终端。在 TCP/IP 中, 每个终端都与一个 IP地址和一个端口号绑定。我们必须对流式套接字和数据报套接字这两种类型进行区分。流失套接字用 TCP/IP 协议来使用面向连接的通信;另一方面,数据报套接字用 UDP/IP 来使用无连接通信。 2.4 流 2.4.1 流的基本概念 流的概念已经存在很长时间了。流是一个用于传输数据的对象。数据的传输有两个方向: 1) 如果数据从外部源传输到程序中,这就是读取流。 2) 如果数据从程序传输到外部源,这就是写入流。 外部源常常是一个文件,但也不完全都是文件,它还可以是: 1) 网络,使用一定的网络协议与网络上其它计算机或终端交换数据。 2) 一个指 定的管道。 3) 一块内存区域。 2.4.2 .NET中的流 在这些情况中,微软提供了一个 .NET 基类 System.IO.MemoryStream 来读写内存数据使用 System.Net.Sockets.NetworkStream 处理网络数据。读写管道没有相应nts 第 5 页 共 28 页 的流类,但有一个常见的流类 System.IO.Stream,如果要编写一个这样的类,可以从这个基类继承。流对外部数据源不做任何假定。外部源还可以是代码中的一个变量,使用流在变量之间传输数据的技术是一个非常有用的技巧,可以在数据类型之间转换。 在网络编程中我们经常会使用到 网络中的流对象: NetworkStream。它实现了 .NET 中标准的 Stream 机制,即可以使用 NetworkStream 通讯网络套接字用标准的流操作进行网络数据的读写。它提供以下的功能: 1) 一个统一的从网络中读取数据的方法 2) 与其他的 .NET 流兼容,这样你可以很容易地移植程序。 2.5 同步、异步、阻塞和非阻塞 同步( synchronous):所谓同步方式,就是发送方发送数据包以后,不等接受方响应,就接着发送下一个数据包。 异步( asynchronous):异步方式就是当发送方发送一个数据包以后,一直等到接受方响应 后,才接着发送下一个数据包。 阻塞( Block):指执行此套接字的网络调用时,直到调用成功才返回,否则此套节字就一直阻塞在网络调用上,比如调用 StreamReader 类的 Readlin ( )方法读取网络缓冲区中的数据,如果调用的时候没有数据到达,那么此 Readlin ( )方法将一直挂在调用上,直到读到一些数据,此函数调用才返回 非阻塞( Unblock):指在执行此套接字的网络调用时,不管是否执行成功,都立即返回。同样调用 StreamReader 类的 Readlin ( )方法读取网络缓冲区中数据,不管 是否读到数据都立即返回,而不会一直挂在此函数调用上。 在 Windows 网络通信软件开发中,最为常用的方法就是异步非阻塞套接字。平常所说的 C/S(客户端 /服务器)结构的软件采用的方式就是异步非阻塞模式的。 其实在用 C进行网络编程中,我们并不需要了解什么同步、异步、阻塞和非阻塞的原理和工作机制,因为在 .Net FrameWrok SDK 中已经已经把这些机制给封装好了。 2.6 C/S 模型 客户机 /服务器模型,又称为 Client/Server 模型,简称 C/S 架构。 C/S 计算技术在信息产业当中占有重要的地位。 这种客户机 /服务器模型是一种非对称式编程模式。该模式的基本思想是把集中在一起的应用划分成为功能不同的两个部分 ,分别在不同的计算机上运行,通过它们之间的分工合作来实现一个完整的功能。对于这种模式而言其中一部分需要作为服nts 第 6 页 共 28 页 务器,用来响应并为客户提供固定的服务;另一部分则作为客户机程序用来向服务器提出请求或要求某种服务。 在此“服务器”是指能在网络上提供服务的任何程序。服务器接受网络上的请求,完成服务后将结果返回给申请者。对于简单的服务,把每个请求用一个 IP数据报发给服务器,服务器用另一个数据报返回响应。 客户机和服务器都 是独立的计算机。当一台连入网络的计算机向其他计算机提供各种网络服务 (如数据、文件的共享等 )时,它就被叫做服务器。而那些用于访问服务器资料的计算机则被叫做客户机。严格说来,客户机 /服务器模型并不是从物理分布的角度来定义,它所体现的是一种网络数据访问的实现方式。采用这种结构的系统目前应用非常广泛。如宾馆、酒店的客房登记、结算系统,超市的 POS 系统,银行、邮电的网络系统等。 各种网络服务器基本都遵循同样的算法 :创建一个端口 (Port),接受从网络上来的客户服务请求,完成计算后把结果返回给客户,如此反复。 2.7 即时通信 协议 协议是一系列的步骤,它包括双方或者多方,设计它的目的是要完成一项任务。即时 通信 协议,参与的双方或者多方是即时 通信 的实体。协议必须是双方或者多方参与的,一方单独完成的就不算协议。这样在协议动作的过程中,双方必须交换信息,包 括控制信息、状态信息等等。这些信息的格式必须是协议参与方同意并且 遵循的。好的协议要求清楚,完整,每一步都必须有明确的定义,并且不会引起误解 ;对每种可能的情况必须规定具体的动作。 有许多的 IM 系统,如 AOL IM、 Yahoo IM 和 MSN IM,它们使用了不同的技术,而且它们互 不兼容。为了创建即时 通信 的统一标准,人们经过了多次尝试: IETF 的对话初始协议( SIP)和 即时 通信 对话初始协议和表示扩展协议( SIMPLE)、应用交换协议( APEX)、显示和即时 通信 协议( PRIM)及基于 XML 且开放的可扩展 通信 和表示协议( XMPP)协议(常称为 Jabber 协议)。人们多次努力,试图统一各大主要 IM 供应商的标准( AOL、 Yahoo 及 Microsoft),但无一成功,且每一种 IM 仍然继续使用自己所拥有的协议。 本系统目的在于实现一个简单的即时通信过程 ,没有必要采用通用 的比较复杂的即时通信协议,因此使用了简单定义的 XML 标记定义来规范即时通信的各种网络信息, 在网络中传输序列化的 XML 语言。 nts 第 7 页 共 28 页 3 系统总体设计 3.1 需求分析 软件针对局域网内部用户,实现用户间的即时通信。需要分别实现服务器端和客户端的软件设计。 服务器端负责监听用户连接请求,负责连接数据库存储用户信息,负责发送给用户好友信息,负责发送心跳报文检查用户在线状态并即时让用户更新好友在新信息。 客户端发起主动连接,向服务器请求登录或者注册。客户端可以修改昵称,可以加已知用户为好友(类似于 MSN 的好友添加功能)。客户端之间可 以发起 P2P 模式的聊天,可以传送文件。 3.2 系统基本架构 基于 C/S 架构的 即时通信软件便于对用户信息进行统一管理和保存 ,面向特定的用户,对信息的安全控制能力很强。为了减轻服务器负担,客户端之间的信息传递是采用 P2P 模式的,服务器只负责用户的注册,登录和用户在线状态的检验。基本结构如图: C L I E N TC L I E N T注 册 和 登 录 信 息S E R V E R返 回 信 息注 册 和 登 录 信 息返 回 信 息聊 天 信 息 , 文 件 传 输图 1 系统基本架构 3.3 功能模块设计 CLIENT: 1.注册 : (1)可以完成客户端注册,客户端可以通过填写信息进行注册,信息被发送到服务器端。 2.登录 : (1)客户可以输入 账号 和密码进行 登录 ,客户端会发送 登录 信息等待服务器响应, 登录 成功后会发出 登录 成功信息并刷新好友列表。 3.修改 : nts 第 8 页 共 28 页 (1)密码修改:应该有密码修改功能 (2)信息修改:可以更改一些注册信息 4.通信 : (1)即时聊天模块:客户端与客户端之间建立线程进行即时聊天,也包含有 简单的 对称 加解密算法功能。 (2)好友列表:可以对好友列表进行添加删除等动作 5.文件传输 : (1)文件传输:文件传输功能 SERVER: 1.注册回应:对客户端传送的注册信息进行判断。 (1)HASH 加密:对用户的 账号 和密码信息进行 HASH 加密 (2)重复用户检查:将加密后信息与已存在 账号 进行比较,检查是否 账号 已存在 ,如果存在就返回错误信息 (3)注册成功:将可成功注册的用户 账号 和密码写入数据库内,并向客户端返回成功信息 2.修改回应: (1)对密码和信息修改请求进行判断,执行和返回修改成功信息 3.登录 回应 : (1)对 登录 的 账号 和密码进行加密检查后发回正确或错误情况,并记录上线信息 (2)好友列表发送:给成功 登录 的 账号 发送好友列表及好友上线信息 (3)上线信息发送:给成功 登录 的 账号 的好友发送在线信息(包括 IP,端口等等信息) 4.在线情况 : (1)对 登录 ,在线,离线的用户情况进行统计,记录和通知 (2)心跳测试:每隔一段时间发送报文测试用户是否因意外原因离线 (3)情况记录: 将用户 登录 时间, IP,下线时间等信息记录入数据库 nts 第 9 页 共 28 页 3.4 逻辑 图 注 册登 录注 册 回 应在 线 情 况C L I E N T S E R V E R用 户 信息 管 理密 码 修 改信 息 修 改取 得 好 友列 表修 改 回 应H A S H加 密注 册 成 功登 录 回 应好 友 列 表发 送上 线 信 息发 送注 册 信息 检 查注 册 失 败YN心 跳测 试N离 线文 件 传 输消 息 加 密消 息 解 密即 时 聊 天在 线 情 况记 录Y图 2 逻辑 图 3.5 数据库设计 3.5.1 实体关系图 服务器是作为记录和读取数据库信息的载体,与客户端关系并不复杂,这里需nts 第 10 页 共 28 页 要重点 考虑客户端之间的关系。用户与用户之间的关系是较为特殊的递归关系,即描述发生在两个相同实体上的关系。 E-R 图如下: 图 3 E-R 图 3.5.2 详细列表 数据库 包含两个表,分别为 记录 用户信息的 TCP_Userinfo 和记录用户好友信息的 TCP_Friendinfo。详细设计见下面两表: 表 1 用户信息表 TCP_UserInfo TCP_Userinfo 列(属性)名 类型 主键 宽度 是否允许为空 备注 UserID numeric Y 9 NOT NULL 自增长 UserAccount nchar N 20 NOT NULL 用户帐号 UserNickname nchar N 20 NOT NULL 用户昵称,可重复 UserEmail nchar N 20 NOT NULL 用户 EMAIL JoinDate nchar N 35 NOT NULL 注册日期 LastLogin nchar Y 20 NOT NULL 最后登录 IP UserIP nchar Y 20 NOT NULL 用户 IP UserFav varchar N 100 NOT NULL 用户好友分组,有默认值 UserQuestion nchar Y 20 NOT NULL 密码问题 UserAnswer nchar Y 20 NOT NULL 密码答案 UserPassword nchar N 20 NOT NULL 用户密码 UserOnline int N 4 NOT NULL 在线状态, 1 在, 0不在 表 2 用户好友表 TCP_FriendInfo TCP_Userinfo 列(属性)名 类型 主键 宽度 是否允许为空 备注 InfoID numeric Y 9 NOT NULL 自增长 UserID nchar N 20 NOT NULL 用户 ID FriendID nchar N 20 NOT NULL 用户好友 ID FriendGroup nchar N 20 NOT NULL 用户好友分组 聊天 文件传输 n n 用户 ID 好友 ID 状态 IP 客户端 账号 昵称 Email ID 密码 好友分组 状态 客户端 账号 昵称 Email ID 密码 好友分组 IP nts 第 11 页 共 28 页 4 系统 实现 4.1 使用 XML定义的即 时通信协议 4.1.1 信息结构 MESSAGE.CS&UMESSAGE.CS 这两个 C#类定义了包括服务器信息,状态信息,注册信息,登录信息,聊天信息或者请求文件传输信息的函数,服务器和客户端通过将它们实例化和序列化再转换成流在网络上进行传输。 UMESSAGE.CS 主要代码如下: Serializable public class UMessage public UMessage() private string _nickname; private string _password; private string _accounts; private string _email; private int _info;/表示注册或者 登录 信息,客户端信息 0为注册, 1为 登录 ;服务器返回信息 0为用户已存在, 1为注册成功 ,2为服务器未知错误, 3为 CLIENT在线检查, 10为 登录失败, 11为 登录 成功 private Friend _friend; private int _fn; private string _fg; public string Nickname get return _nickname; set _nickname = value; public string Password get return _password; set _password = value; public string Accounts get return _accounts; set _accounts = value; public string Email get return _email; set _email = value; public int Info get return _info; nts 第 12 页 共 28 页 set _info = value; public Friend Fri get return _friend; set _friend = value; public int Fn get return _fn; set _fn = value; public string Fg get return _fg; set _fg = value; 由于 MESSAGE.CS 与 UMESSAGE.CS 类似, 在此不再详述 。 服务器和 客户 端都可 以通过 相同的 代码 对 UMESSAGE 赋 值,再 通过XmlSerializer 方法进行将 UMESSAGE 序列化为 XML 文档,最后将 XML 文档转化为网络流进行传输。代码如下 : #region 将 登录 信息转为 UMessage private void Traslator() _message.Accounts=this.TextBox1.Text; _message.Nickname=; _message.Password=this.TextBox2.Text; _message.Email=; _message.Info=1; _message.Fri=null; #endregion 4.1.2 数据结构 FriendStruct 服务器如果保存和传递用户的好友信息是难点之一。数据库的设计和信息的传递辨别都是比较难实现的。 在数据库方面, 每个用户拥有各自的好友分组信息( UserFav),分组中间使用“,”分隔,在 TCP_FriendInfo 表中则分别保存了用户 ID和好友 ID, 使用一个 INTnts 第 13 页 共 28 页 字段保存分组信息。 数据库以 用户 ID 为标准对好友 ID和分组信息进行内连接查询,就可以得到基本的好友信息了。代码如下: select * from TCP_UserInfo join TCP_FriendInfo on TCP_FriendInfo.UserID= + uid + and TCP_UserInfo.UserID=TCP_FriendInfo.FriendID 在好友信息的传输方面,首先 定义一个 FriendStruct 数据结构(当然也可以用枚举完成)如下: using System; using System.Collections.Generic; using System.Text; namespace TCP public class FriendStruct public struct FileInfo public int filere;/接收和拒绝信息 ,1为接收, 2为拒绝, 3为取消 public string filename; public long filelength; public struct Friend public string account; public string nickname; public string I
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:JSJ01-054@ASP.NET基于TCP协议的简单即时通信软件的设计与实现(源代码+论文)
链接地址:https://www.renrendoc.com/p-507967.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知人人文库网,我们立即给予删除!