ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:122.38KB ,
资源ID:9301039      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9301039.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(即时通讯软件的设计论文.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

即时通讯软件的设计论文.docx

1、即时通讯软件的设计论文即时通讯软件的设计班 级 09 计算机网络 专 业 计算机网络技术 教 学 系 信息工程系 指导老师 完成时间:2011年11月1日至2011年11月20日目 录第一章 引言 21.1即时通讯软件设计的意义及来源 21.2即时通讯软件的现状 21.3客户/服务器模式的基本概念 31.4 功能的实现及使用的技术 31.4.1 服务器部分 41.4.2客户端部分 41.5 设计工作的概要介绍 5第二章 相关开发技术的原理性说明 52.1 TCP/IP 协议 52.1.1 TCP/IP 协议参考模型的层次结构 52.1.2 TCP/IP协议的通信方式 72.2 P2P技术原理

2、8第四章 详细设计 94.1 面向连接TCP通信类 104.1.2 服务端 114.1.3 服务端 16结束语 19参考文献 20即时通讯软件的设计摘要: 即时通讯(Instant Messaging,IM)是目前Internet上最为流行的通讯方式,而各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。随着互联网的发展,即时通讯的运用将日益广泛。 本论文初步探讨的即时通讯所涉及到的一些技术,例如:Client/Server模式,P2P通信模式,STP协议,即时通讯软件的拓扑结构等。最后,应用Java及软件工程,数据库技术编写出Client端和Server端程序,能够

3、实现客户端与客户端的通讯关键词:Client/Server模式,P2P通信模式,STP协议第一章 引言1.1即时通讯软件设计的意义及来源即时通讯软件是通过即时通讯技术来实现在线聊天、交流的软件。从80年代后期,尤其是90年代至今,基于TCP/IP协议的即时通信系统获得了更为广阔的发展空间。尤其是移动互联网的发展,标志着以“互联网、方便、时尚”为特征的后PC时代的到来,网上聊天的主要工具已经从初期的聊天室、论坛变为以“MSN”、“QQ”为主要特征的网络即时通信(Instant Messaging,缩写为IM,是以Internet网络及其它有线、无线网络为基础,实现交互双方文字、文件、语音等信息实

4、时传送的通信过程。)即时通信系统的最大特点就是能在网上进行信息的实时交流,与传统的通信方式相比,即时通信具有快捷、廉价、隐蔽性等特点,在网络上可以跨年龄、身份、行业、地域的限制,达到人与人之间的零距离交流,使得人们的沟通更加方便、快捷,最大程度的体现了网络给人们生活带来的翻天覆地变化。即时通讯软件,几乎是每一个上网用户都必备的联络工具,它除了能够让我们迅速地在网上找到自己的朋友和工作伙伴外,还可以实时交谈和传递信息,而且,现在不少即时通讯软件还集成了文件共享、语音聊天、网络会议等功能。截止到目前,全球约有近3亿多人使用即时通讯软件进行交流。1.2即时通讯软件的现状广域网上的即时通信工具,如今一

5、般采用UDP或者 TCP协议体系来实现 ,开发技术已经比较成熟,比如较早的ICQ、MSN Messenger、YAHOO通等国外开发的产品,还有国产的有名的QQ、新浪UC、LAVA-LAVA等,这些工具统统都实现了广域网上的即时通信,尽管都是即时通信,实现了即时聊天,以及文件传输的主要功能,但是也各有各的特色,比如ICQ的巨大客户群,MSN的个性化表情,YAHOO通的易操作性等,而QQ也具有一个相当方便的屏幕截图功能,另外就是,所有上述软件都实现了网络即时的视频,语音聊天功能。这些软件,在使用方面各有特色,在实现方面也各有所长,但由于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节不

6、可能得知,但是它在大的方面无非就是各种利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者UDP/IP协议的软件产品。现代社会随着网络通信技术的进一步发展和互联网的普及,会有更多的网络用户,同时也会有更多的即时通讯软件出现。因此,需对现有的即时通讯软件进行研究和设计,以适应新的用户需求。1.3客户/服务器模式的基本概念在客户/服务器模式中,客户与服务器分别表示相互通信的两个应用程序进程。客户向服务器发出服务请求,服务器响应客户的请求,提供客户所需要的网络服务。客户/服务器模式的进程相互作用如图1.4 功能的实现及使用的技术 本设计将客户端和服务器做到了一起,使用时由用户自行选择。为方便

7、说明客户端/服务器的概念,下面将分别简单讲述两个部分的关键技术:1.4.1 服务器部分服务器端主要完成通信线路的建立和接收用户端传来的信息,服务器程序通常都与数据库相结合,用户端只有向服务器发送连接请求,得到服务器段允许才可以建立连接。等待客户连接请求、客户连接、会话产生、完成会话、关闭连接,服务器通过上述程序实现数据传输。其中关键问题主要集中在以下几个方面:编码压缩及传输技术、存储和I/O调度策略、流量控制与差错控制、接入控制、IP网的实现,服务器客户端模型如图1.4.2客户端部分客户端主要工作是使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后

8、,关闭Socket。客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口2。它的核心部分主要有:应答区、对话区等。不同协作类型的系统对这2个部分的侧重点可能不同,开发过程中涉及TCP/IP协议技术,Java编程技术等。1.5 设计工作的概要介绍本设计的研发过程是严格按照软件工程开发流程进行的,主要工作包括项目的需求分析,结构规划,通信模块的设计,类结构及类图的制定,在这个过程中主要利用计算机通信协议原理,在WINDOS平台下开发通信软件,主要包括套接字编程,以及通信程序设计实现技术。第二章 相关开发技术的原理性说明2.1 TCP/IP 协议2.1.1 TCP/IP 协议参考

9、模型的层次结构TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。此外,TCP协议还需要完成流量控制功能,协调收发双方的发送与接收速度,以达到正确传输的目的。 TCP/IP参考模型分为四个层次:应用层、传输层、网络互连层和网络接口层。如表2-1所示。表2-1 TCP/IP参考模型的层次结构成员变量 描述应用层 MAIL、TELNET、FTP、SMTP、HTTP、WWW、SNMP、TFTP传输层 TCP、UDP网络互连层 ICMP、IP、AR

10、P、RARP网络接口层 HDLC PPP FPAMERELAY、EIA/TIA-232 , 449、V.35、V.21TCP/IP协议中的核心部分是传输层协议(TCP、UDP)、网络层协议(IP)和网络接口层,这3层通常是在操作系统内核中实现,因此用户一般不涉及。在具体编程时,将提供以下两种形式的编程界面:由内核心直接提供的系统调用或使用以库函数方式提供的各种函数。前者为内核实现,后者为核外实现。用户服务要通过核外的应用程序才能实现,也就是使用套接字7。图2-1中展示了TCP/IP协议核心与应用程序的一般关系。在TCP/IP参考模型中,去掉了OSI参考模型中的会话层和表示层(这两层的功能被合并

11、到应用层实现)。同时将OSI参考模型中的数据链路层和物理层合并为网络接口层。下面,分别介绍各层的主要功能。1、网络接口层网络接口层实际上并不是因特网协议组中的一部分,但是它是数据包从一个设备的网络层传输到另外一个设备的网络层的方法。这个过程能够在网卡的软件驱动程序中控制,也可以在韧体或者专用芯片中控制。这将完成如添加报头准备发送、通过物理媒介实际发送这样一些数据链路功能。另一端,链路层将完成数据帧接收、去除报头并且将接收到的包传到网络层。2、网络互连层网络互连层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因

12、此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。网络互连层定义了分组格式和协议,即IP协议(Internet Protocol)。网络互连层除了需要完成路由的功能外,也可以完成将不同类型的网络(异构网)互连的任务。除此之外,网络互连层还需要完成拥塞控制的功能。3、传输层在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol)。4、应用层TCP/IP模型将

13、OSI参考模型中的会话层和表示层的功能合并到应用层实现。应用层面向不同的网络应用引入了不同的应用层协议。其中,有基于TCP协议的,如文件传输协议(File Transfer Protocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(Hyper Text Transfer Protocol,HTTP),也有基于UDP协议的。开发通信系统时,关心的主要是网络层的IP协议和运输层的TCP和UDP协议(是一种不可靠的无连接协议,主要用于不要求分组顺序到达的传输中,分组传输顺序检查与排序由应用层完成)。2.1.2 TCP/IP协议的通信方式TCP/IP协议是Internet上广泛使用的一

14、种协议,可用于异种机之间的互联。在网络编程中,程序员只需要利用协议的网络编程接口Socket9(也称套接字)即可。在Windows中,网络编程接口是Windows Socket,它包含标准的Berkley Socket 的功能调用集合,以及为Windows所做的一些扩展。TCP/IP协议的应用一般采用客户/服务器模式,面向连接的应用调用如图2-2所示。2.2 P2P技术原理什么是对等网络(P2P)技术?P2P技术属于覆盖层网络(Overlay Network)的范畴,是相对于客户机/服务器 (C/S)模式来说的一种网络信息交换方式。在C/S模式中,数据的分发采用专门的服务器,多个客户端都从此服

15、务器获取数据。这种模式的优点是:数据的一致性容易控制,系统也容易管理。但是此种模式的缺点是:因为服务器的个数只有一个(即便有多个也非常有限),系统容易出现单一失效点;单一服务器面对众多的客户端,由于CPU能力、内存大小、网络带宽的限制,可同时服务的客户端非常有限,可扩展性差。P2P技术正是为了解决这些问题而提出来的一种对等网络结构。在P2P网络中,每个节点既可以从其他节点得到服务,也可以向其他节点提供服务。这样,庞大的终端资源被利用起来,一举解决了C/S模式中的两个弊端。 P2P网络有3种比较流行的组织结构,被应用在不同的P2P应用中。 (1)DHT结构 分布式哈希表(DHT)1是一种功能强大

16、的工具,它的提出引起了学术界一股研究DHT的热潮。虽然DHT具有各种各样的实现方式,但是具有共同的特征,即都是一个环行拓扑结构,在这个结构里每个节点具有一个唯一的节点标识(ID),节点ID是一个128位的哈希值。每个节点都在路由表里保存了其他前驱、后继节点的ID。通过这些路由信息,可以方便地找到其他节点。这种结构多用于文件共享和作为底层结构用于流媒体传输 。 (2)树形结构 P2P网络树形结构如图1(b)所示。在这种结构中,所有的节点都被组织在一棵树中,树根只有子节点,树叶只有父节点,其他节点既有子节点也有父节点。信息的流向沿着树枝流动。最初的树形结构多用于P2P流媒体直播3-4。 (3)网状

17、结构 网状结构如图1(c)所示,又叫无结构。顾名思义,这种结构中,所有的节点无规则地连在一起,没有稳定的关系,没有父子关系。网状结构5为P2P提供了最大的容忍性、动态适应性,在流媒体直播和点播应用中取得了极大的成功。当网络变得很大时,常常会引入超级节点的概念,超级节点可以和任何一种以上结构结合起来组成新的结构。如图所示第四章 详细设计4.1 面向连接TCP通信类1. InetAddress在包中提供了InetAdress类,用来描述一个IP地址,此类中提供了一些常用的方法来访问网络资源,如:public static InetAddress getByName(String host)thro

18、ws UnknowHostException: 确定所给主机名的计算机的IP地址。 public static InetAddress getLocalHost()throws UnknowHostException: 返回本地主机名和IP地址。public String getHostName(): 获得指定IP地址的主机名。2. SocketSocket用在客户端,用户通过构造一个Socket对象来建立与服务器的连接。Socket连接有两种分别是流连接和数据连接,以下是Socket类的构造方法主要有一下几种: Socket(): 建立一个空的Socket类的对象。 Socket(Strin

19、g host , int port): 构造一个连接指定主机,指定端口的Socket流对象。 Socket(String host , int port , boolean type): 构造一个连接指定主机,指定端口的Socket类的对象,boolean类型参数用来设置是流连接还是数据连接。 Socket(InetAddress address , int port): 构造一个指定Internet地址,指定端口的Scoket流对象。 Socket(InetAddress address , int port , boolean type): 构造一个指定Internet地址,指定端口的Sc

20、oket流对象,boolean类型参数用来设置是流连接还是数据流接。构造完Scoket对象后,就可以通过Scoket类来建立输入,输出流,通过流来传输数据。其方法如下: InputStrean getInputStream(): 获得Scoket的输入流。 OutputStream getOutputStream(): 获得Socket的输出流。 void close():关闭Socket。3. ServerSocketServerSocket类用在服务端,接受用户端传送的数据,构造方法如下: ServerSocket(): 建立一个没有绑定端口的ServerSocket类对象。 Server

21、Socket(int port) : 建立一个绑定指定端口的ServerSocket对象。ServerSocket类常用的成员方法;Socket accept(): 等待连接,此方法在指定ServerSocket上挂起等待,直到有用户连接时, 才建立一个用于处理用户请求的新的Socket对象。void bind(SocketAddress endport): 绑定到指定IP地址的方法。void close():关闭连接。 4.1.2 服务端/聊天室服务器import .*;import java.io.*;import java.util.*;import java.awt.event.*;i

22、mport java.awt.*;import javax.swing.*;class Server extends JFrame private TextArea msgA = new TextArea();/服务器用来输入的文本域private TextArea area = new TextArea();/服务器显示消息的文本域private java.awt.List list = new java.awt.List();/在线客户列表private ServerSocket server;/服务器private Socket client;/客户端private Map contai

23、ner = new HashMap();/HashMapvoid init() /设置几个面板 Panel p1 = new Panel(); Panel p2 = new Panel(); Panel p3 = new Panel(); Panel p4 = new Panel(); Panel p5 = new Panel(); Panel p6 = new Panel(); Panel p7 = new Panel(); /设置两个主要的文本框 BorderLayout border1 = new BorderLayout(); p1.setLayout(border1); p1.add

24、(BorderLayout.CENTER, area); BorderLayout border2 = new BorderLayout(); p3.setLayout(border2); p3.add(BorderLayout.NORTH, p2); p3.add(BorderLayout.CENTER, msgA); BorderLayout border3 = new BorderLayout(); p4.setLayout(border3); p4.add(BorderLayout.CENTER, p1); p4.add(BorderLayout.SOUTH, p3); JButton

25、 startButton = new JButton(启动服务); JButton sendButton = new JButton(发送); JButton flushButton = new JButton(刷新列表); FlowLayout fl = new FlowLayout(FlowLayout.LEFT); p5.setLayout(fl); p5.add(startButton); p5.add(sendButton); p5.add(flushButton); BorderLayout border4 = new BorderLayout(); p6.setLayout(bo

26、rder4); p6.add(BorderLayout.CENTER, p4); p6.add(BorderLayout.SOUTH, p5); p7.setLayout(new BorderLayout(); Label lb3 = new Label(在线用户); p7.add(lb3,BorderLayout.NORTH); p7.add(list,BorderLayout.CENTER); area.setEditable(false); BorderLayout border = new BorderLayout(); this.setDefaultCloseOperation(JF

27、rame.EXIT_ON_CLOSE); this.setLayout(border); this.add(BorderLayout.CENTER, p6); this.add(BorderLayout.EAST, p7); this.setTitle(聊天服务器); this.setBounds(100, 100, 600, 550); this.setVisible(true); /启动服务按钮监听器 startButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) T

28、hread t = new Start(); t.start(); ); /发送按钮监听器 sendButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String msg = msgA.getText(); if (msg != null & msg != ) /如果消息不为空 Calendar ca = new GregorianCalendar(); int hh = ca.get(Calendar.HOUR_OF_DAY); int mm = ca.get(Ca

29、lendar.MINUTE); int ss = ca.get(Calendar.SECOND); String time = new String(hh + : + mm + : + ss + ); broadcast(time + 系统消息: + msg);/那么广播这条系统消息 area.append(time + 系统消息: + msg + n); msgA.setText(); ); /刷新按钮监听器 flushButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e

30、) if (list != null) list.removeAll();/清空在线用户列表,以便刷新 SetMap.Entry mySet = container.entrySet(); for (IteratorMap.Entry it = mySet.iterator(); it.hasNext();) /刷新列表 Map.Entry me = it.next(); String aClientName = me.getKey(); Socket aClient = me.getValue(); String aClientAddress = aClient.getInetAddress().getHostAddress(); list.add(aClientName + - + aClientAddress); ); msgA.addKeyListener(new KeyAdapter()/键盘监听器-按下Enter发送信息 public void keyPressed(KeyEvent e) int value = e.getKeyCode(); if(value = KeyEvent.VK_ENTER) String msg

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1