基于TCP协议的简单即时通信软件的设计与实现(含源文件).doc

上传人:人*** 文档编号:546555641 上传时间:2023-04-28 格式:DOC 页数:21 大小:311.54KB
返回 下载 相关 举报
基于TCP协议的简单即时通信软件的设计与实现(含源文件).doc_第1页
第1页 / 共21页
基于TCP协议的简单即时通信软件的设计与实现(含源文件).doc_第2页
第2页 / 共21页
基于TCP协议的简单即时通信软件的设计与实现(含源文件).doc_第3页
第3页 / 共21页
基于TCP协议的简单即时通信软件的设计与实现(含源文件).doc_第4页
第4页 / 共21页
基于TCP协议的简单即时通信软件的设计与实现(含源文件).doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《基于TCP协议的简单即时通信软件的设计与实现(含源文件).doc》由会员分享,可在线阅读,更多相关《基于TCP协议的简单即时通信软件的设计与实现(含源文件).doc(21页珍藏版)》请在金锄头文库上搜索。

1、 基于TCP协议的网络通信系统的设计与实现摘要:网络通信,由于其具有实时性、跨平台性、成本低、效率高等优点而受到广泛的使用.设计并实现一个能够处理多用户进行实时、安全的即时通信系统具有较强的现实意义。即时通信的底层通信是通过SOCKET套接字接口实现的。当前的主流UNIX系统和微软的WINDOWS系统都在内核提供了对SOCKET字接口的支持。使用这个统一的接口,可以编写一个可移植的TCP/IP通信程序。使信息能够在INTERNET上可靠的传输。 本文设计并实现了基于局域网内的简单即时通信系统,系统采用C/S模式,底层通信通过SOCKET套接字接口实现,服务器负责客户端的登录验证,好友信息的保存

2、和心跳报文的发送。客户端采用P2P方式实现消息传递,并能实现文件的传输。本文首先讨论了同步套接字,异步套接字,多线程并发执行任务等;然后阐述了客户端、服务器如何使用XML序列化的消息进行通信.关键词:即时通信;文件传输;套接字;TCP协议Abstract:Instantmessageshaveseveraladvantagessuchasreal-time,cross-platform,cheapandefficient。TodesignaMultiuserIM(instantmessage)architectureisveryimportantinboththeoryandrealism。I

3、nstantmessagebasedonTCP/IPprotocolthatisrealizedbysocketinterface。AlmostallUNIXoperationsystemsandMicrosoftswindowsoperationsystemsprovidesupportofsocketinthekernel。Usingtheuniforminterface,wecandevelopaportableprogramofTCP/IP,whichhelpustransferinformationinInternetsafelyandcredibly。Thesystemusesth

4、eclient/server(C/S)mode.Theservertakestheresponsibilityoftheloginmessageofclient,thesavingoffriendmessageandMessageheartbeat。ThetransmissionofthebasicmessagesofthecustomerendwillbedesignedonP2Parchitecture。ThisthesisexplainshowtheclientandservercommunicateviaserializingXMLmessage.Keywords:InstantMes

5、sage;FileTransfer;Socket;TCPprotocol 引言1.1课题背景 即时通信是一个终端连往一个即时通信网路的服务。即时通信不同于e-mail在于它的交谈是实时的。大部分的即时通信服务提供了presenceawareness的特性显示联络人名单,联络人是否在在线与能否与联络人交谈。 最早的即时通信软件是ICQ,ICQ是英文中Iseekyou的谐音,意思是我找你。四名以色列青年于1996年7月成立Mirabilis公司,并在11月份发布了最初的ICQ版本,在六个月内有85万用户注册使用. 在因特网上受欢迎的即时通信服务包含了MSNMessenger、AOLInstantM

6、essenger、Yahoo!Messenger、NETMessengerService、Jabber、ICQ与QQ。这些服务有赖于许多想法更久的(与普遍)的在线聊天媒介,如InternetRelayChat一样知名。 1970年代早期,一种更早的即时通信形式是柏拉图系统(PLATOsystem)。之后在1980年代,UNIX/Linux的交谈实时信息被广泛的使用于工程师与学术界,1990年代即时通信更跨越了因特网交流.1996年11月,ICQ是首个广泛被非UNIX/Linux使用者用于因特网的即时通信软件.在ICQ的介绍之后,同时在许多地方有一定数量的即时通信方式发展,且各式的即时通信程序有

7、独立的协议,无法彼此互通。这引导使用者同时执行两个以上的即时通信软件,或者他们可以使用支持多协议的终端软件,如Gaim、Trillian或Jabber。1。2国内外研究现状1.2.1国外研究现状当今,国际上对网络通信系统研究的较好的公司有,思科,Sun,Ms等公司,思科主要研究的是底层的传输;MS,Sun公司研究的是应用层。其中ms公司凭借其在操作系统的垄断地位,为了在网络的发展中取得先机,采用了各种各样的手段。但是,其捆绑的msn,无论从功能上,还是技术上来说,都不算是非常先进的。当然,ie,同样也不是很受人青睐,这让人想起了,当年的网景公司,网景只是生不逢时。MS不择手段的想打跨网景,可见

8、其对网络的重视。如今,Sun公司在网络应用上捷足先登,凭借着Java,Sun在网络的应用上领先于MS.微软,想用同样的办法搞跨对手,因此它拿出了Visualc,来对抗Java。这些都是在应用层面的开发工具。应用层上的产品就更显种类繁多。ICQ几乎是国际上通用的即时通信工具,由于在我国它的应用不是很广,所以,其原理也很少被介绍.msn,是MS的产品,同样在国内没什么市场,所以,对其原理,也很少被讨论过。至于ie,是在Visualc+下开发的产品,虽然有严重的安全隐患,不过,至少能在某种程度上代表当今国际研究的水平。此外,国际上最近出先了新的浏览器Firefox,其性能据说是远高于ie,也许在网络

9、的天下,Ms又有了更强劲的对手。1.2。2国内研究现状国内在应用层上的网络应用软件目前发展异常的火爆,因为我国有着网络应用的最大的市场,现在国内网络的基础性建设发展迅速,应用软件也层出不穷,其中,在游戏的领域中,网络通信的工作做的不错,如联众游戏平台,还有其他的一些平台,这些平台基本上都是基于VC+的,用的都是Socket通信,但是为了效率,这些平台没有用MFC提供的CSocket类,而是直接用Socket进行通信.所以效率上不错。此外,tencent的即时通信,也是做的很好的,从某中程度上来说,代表了国内最高的水平。1。3本课题的研究方法 本系统采用C/S(Client/Server)结构进

10、行设计,使用SQLServer2000构建数据库,并在。NET环境下使用VisualC。net语言和SOCKET套接字开发一个基于TCP协议的简单即时通信软件,实现简单的即时聊天,文件传输等功能.2相关技术介绍2。1。NET开发平台及C.NET开发语言 NET框架是Microsoft公司推出的一种全新的开发平台,提供了统一的、面向对象并且可以扩展的编程类库和完善的集成开发环境,大大简化了应用程序的开发过程,并且具有良好的移植性和安全性。 微软为了推行。NET战略,特别为。NET平台设计了一种语言C.C是由C和C+派生而来的一种“简单、流行、面向对象、类型安全”的程序设计语言,其综合了Visua

11、lbasic的高效率和C+的强大功能,然而更多的人感觉C更类似JAVA。2.2TCP协议2。2.1TCP/IP网络协议 协议是对等的网络实体之间通信的规则,可以简单地理解为网络上各计算机彼此交流的一种“语言”。网络通信协议设计的基本原则是层次化,层和协议的集合被称为网络体系结构.相邻层之间的接口定义了下层向上层提供的基本操作和服务,下层向上层提供的服务分两种形式:面向连接的服务和无连接的服务. 计算机网络中已经形成的网络体系结构主要有两个:OSI参考模型和TCP/IP参考模型。TCP/IP参考模型是因特网(Internet)的基础。和OSI的7层协议相比,TCP/IP协议只有4个层次。通常说的

12、TCP/IP是一组协议的总称,TCP/IP实际上是一个协议族,包括100多个相互关联的协议,其中IP(InternetProtocol,网际协议)是网络层最主要的协议;TCP(TransmissionControlProtocol,传输控制协议)和UDP(UserDatagramProtocol,用户数据报协议是传输层中最主要的协议),一般认为IP、TCP、UDP是最根本的三种协议,是其他协议的基础。2。2.2TCP-传输控制协议:面向连接的通信可以使用可靠通信,在这时候,第四层协议发送数据接收方的确认,如果未收到数据或者数据被损坏,则请求重新传输。TCP协议就使用这种可靠通信。使用TCP协议

13、的应用层协议包括HTTP、FTP、SMTP和Telnet等. 现在可以发送和接收消息了。接收消息后,总是返回ACK消息。如果在收到ACK之前发送方已经超时,则消息将被放到重发队列中以再次发送。 由于它的握手机制,所以TCP协议比较复杂并且费时,但此协议在处理数据时对数据包的传送有保障,从而使得在应用程序协议中不需要再包括该功能。2.3套接字 套接字这个术语并没有定义某个协议:它具有两层含义,但两者都与一个协议相关。第一个含义是套接字编程API,它最初由伯克利大学为BSDUNIX而创建。BSD套接字在经过修改后被用作Windows环境的编程接口(并且被命名为WinSock)。WinSockAPI

14、被包装在System.Net.sockets命名空间的.NET类中。WindowsSockets是一个独立于协议的编程接口,用于编写网络应用程序。2。4流2。4。1流的基本概念流的概念已经存在很长时间了.流是一个用于传输数据的对象。数据的传输有两个方向:1)如果数据从外部源传输到程序中,这就是读取流。 2)如果数据从程序传输到外部源,这就是写入流。外部源常常是一个文件,但也不完全都是文件,它还可以是: 1)网络,使用一定的网络协议与网络上其它计算机或终端交换数据。 2)一个指定的管道。 3)一块内存区域.2.5同步、异步、阻塞和非阻塞 同步(synchronous):所谓同步方式,就是发送方发

15、送数据包以后,不等接受方响应,就接着发送下一个数据包. 异步(asynchronous):异步方式就是当发送方发送一个数据包以后,一直等到接受方响应后,才接着发送下一个数据包。 阻塞(Block):指执行此套接字的网络调用时,直到调用成功才返回,否则此套节字就一直阻塞在网络调用上,比如调用StreamReader类的Readlin()方法读取网络缓冲区中的数据,如果调用的时候没有数据到达,那么此Readlin()方法将一直挂在调用上,直到读到一些数据,此函数调用才返回. 非阻塞(Unblock):指在执行此套接字的网络调用时,不管是否执行成功,都立即返回。同样调用StreamReader类的Readlin()方法读取网络缓冲区中数据,不管是否读到数据都立即返回,而不

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号