




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机综合课程设计课程设计题 目: 即时通讯系统的设计与实现 学生姓名:学 号:专业班级:指导教师: 即时通讯系统的设计与实现摘 要近年来,随着Internet的飞速发展,计算机网络得到了越来越广泛的应用,并且已经逐步走进千家万户。自迈入信息时代以来,距离已经不再是人们之间联络沟通的障碍,也正因为如此,人们对沟通交流的需求和依赖也越来越强烈,各行各业对信息交流的要求也越来越高。如今,通过各种即时通信软件,人们已经可以在足不出户的情况下,与远距离甚至世界各地的人进行实时的聊天交流,这样的交流不仅满足了人们对交流沟通的需求,同时也给人与人之间的交流带来了极大的便捷和大量的经济节省。因此,即时通信(Instant Messaging)在人们的生活工作和学习中得到了更广泛的应用。目前,已经有不少即时通信软件在社会公众中流行,像腾讯QQ,新浪微博等,都是国内人们所熟知的知名流行即时通信软件,其技术方面也都处于国际领先水平。同时,由于即时通信软件的便利,其应用已经由最初的简单的聊天交友得到了巨大的拓展。适应各种场合的各式即时通信软件也开始出现在软件市场上,这就包括了一些与企业管理相关的即时通信软件,一个具有企业自己特色的集信息管理和即时通信为一体的内部应用软件,能够使一个企业或者团队更像一个整体,同时也能够给企业的管理和信息交流带来极大的便利,在一定程度上提高工作效率。同样的,对于软件设计与开发的行业来说,过去的那种仅适用于PC机上的应用程序的开发已经远远不能满足市场的多样化的需求,网络程序的广泛应用和广大需求使学习与掌握与网络相关的编程技术显得尤为重要。本论文将结合一个具体的局域网即时通信系统的开发编写,以现有的各种技术,介绍讲解网络IM软件开发中的重要知识,并讨论其中关键环节的技术问题和各种解决方案和设计策略。关键词:即时通信; 信息交流; IM软件; 网络编程Design and implementation of instant messenger systemAbstractIn recent years, with the rapid development of Internet, computer network has been more and more widely used, and has gradually entered the tens of thousands of households.Since entering the information age, the distance between people is no longer the communication obstacles, because of this, people on the communication demand and dependence are increasingly strong, demand for the exchange of information is more and more high.Now, through a variety of instant messaging software, people can stay at home situation, and even remote people around the world for real-time chat communication, such communication not only to meet the communication needs, but also brought great convenience and economy to save a lot of communication between people.Therefore, instant messaging (Instant Messaging) has been widely used in peoples life, work and study.At present, there have been a lot of popular instant messaging software, in the public like Tencent QQ, Sina and micro-blog, are well-known domestic popular instant messaging software known as, its technology has reached the international advanced level.At the same time, due to the convenience of instant messenger software, its application has been greatly expanded by the initial simple chatting and dating.To adapt to all kinds of instant communication software on various occasions also began to appear in the software market, which includes a number of enterprise management and related internal instant messaging software, application software is a set of enterprise information management has its own characteristics and instant communication as a whole, can make a company or team as a whole, at the same time it can bring great convenience to the management of enterprises and the exchange of information, improve the work efficiency to a certain extent.Similarly, for the design and development of software industry, application development past that applies only to the PC machine on the market can not meet the diversified needs, widely used and the demand of network program to learn and master the network related programming technology is very important.This paper will combine the development of instant communication system of a specific LAN written in various existing techniques, introduce important knowledge in software development of IM network, the key technical problems and solutions and discuss and design strategies.Keyword: Nitrides;MOCVD;LED;Photoluminescence;RBS/channeling;Optical absorption目 录摘要2Abstract31. 问题描述41.1. 题目内容41.2. 数据要求52. 分析与设计52.1. 功能描述52.2. 程序流程图的设计52.3. 数据库结构描述62.4. 测试数据、运行界面图及期望结果72.5. 模块结果及各个模块的实现方法描述103. 源代码113.1. 服务器端113.2. 客户端144. 总结165. 参考文献161. 问题描述1.1. 题目内容即时通讯是指为网络在线用户提供通过客户端和服务器度端软件进行实时信息交流的服务,即时通讯软件提供了两台主机间的网络高层协议。本文内容即为即时通讯系统的设计与实现。1.2. 数据要求1、实现实验室局域网内的即时通讯软件,在线的两台主机之间可以互 发文字信息、音频信息,可以传递文件;2、软件自动扫描网内用户并加入好友组群,用户名以实验桌号定义;3、所有用户间可以共享文件,实现方式可以是将文件拉入组群或设立共享空间自行下载。2. 分析与设计2.1. 功能描述本系统的使用对象为个人用户,要完成的主要功能为实时聊天会话功能,以及与之伴随的用户信息管理,并包括网络即时通信的相关通行功能。在扩展方面还应当加入固定群组会话与临时会话组等功能,进阶功能还包括文件传输,语音、视频对话等高阶功能。对于一个网络即时通信系统而言,由于本系统采用基于TCP的集中式C/S结构,必须具备一些与网络连接相关的通用功能,无论系统的最终用途是什么,这些功能都是必不可少的,具体包括:(1)客户端登陆(2)新用户注册(3)找回、修改密码(4)登录设置(5)发送接受消息(6)聊天记录(7)查找添加删除好友(8)传送文件等。2.2. 程序流程图的设计在SOCKET网络编程中,socket函数通常是以阻塞方式进行的,即在执行数据收发过程的时候,程序线程会在收发过程完成之前阻塞,只有在完成了当前数据收发工作后,才会执行其他指令,这样一来,接收数据、发送数据、处理数据、逻辑过程等都无法同步进行,在频繁的网络数据传输过程中,各种传输工作以及处理工作都有可能同时发生,无法同步显然会造成用户使用过程中过多的等待,给用户操作带来极大的不良感觉。在这样的情况下,必须通过自行创建额外线程来辅助程序主线程的工作,以多线程同步的方法来解决阻塞方式数据传输带来的不良影响。为此,除了主线程外,每一次数据接收、数据发送、数据处理等工作都将分别单独占用一个线程,以此来完成数据接收发送以及处理的同步工作。CSeesion队列是否收到连接请求请求消息外来连接请求监听SOCKET服务器逻辑控制按照验证数据包的形式读取解析该连接上首次收取的数据接受连接,创建管理该连接的CSession对象,并首次首取数据是否通过验证?丢弃该连接,删除其CSession对象给该CSession对象发放ID,进入连接管理队列,并将其验证信息所对应的用户ID与此CSession的ID做关联,放入关联容器map中用户IDCSessionID新的关联关系用户IDCSessionID用户IDCSessionID用户IDCSessionIDstaffed_SessionID_MAP新的CSession对象已经存在的CSession对象图1-2 服务端管理网络连接的流程图2.3. 数据库结构描述在该系统中,需要在服务器中存储的数据信息主要包括用户信息和用户关系信息两个方面,在用户信息方面,又包含个人信息和操作信息两个方面,其中,个人信息是用户可以在获得登陆帐号后自行修改的。下面将结合本系统的数据库设计,介绍系统中包含的主要用户信息数据。2.4. 测试数据、运行界面图及期望结果首先开启服务器程序注册登录页:主页、聊天面板:查找、添加好友:文件传送:2.5. 模块结果及各个模块的实现方法描述2.5.1. 登陆认证功能的实现(1)用户在界面中输入用户名,密码,并点击登陆按纽,客户端界面向其逻辑处理层发送登陆消息。(2)逻辑层响应登陆消息,将用户名密码封装成登陆认证包,写进网络连接管理对象的数据发送缓冲区,并发出连接请求消息。(3)客户端网络连接管理对象尝试进行连接。(4)服务端的网络连接监听模块发现新来的连接请求,向服务端网络传输模块发出消息。(5)服务端网络连接管理模块暂时接受该连接请求,并收取其首次发来的数据,与数据库中数据信息进行核对验证,如果验证失败,则立即断开连接,转入(6);如果验证通过,则跳过(6)转到(7)(6)验证失败,客户端网络连接管理对象发现连接断开,向用户界面发出错误信息,界面显示出错误提示。(7)验证成功,服务器给此连接发放ID,并将其存入连接队列,且根据数据库中对应的用户ID与连接管理ID进行关联,向该连接客户端发送连接成功应答包。其中包含着该用户名对应的ID号。2.5.2. 发送和接收聊天信息的实现(1)用户打开列表中某其他在线用户的聊天窗口,输入信息后点击发送。(2)逻辑层收到事件消息,获取聊天窗口所对应的用户信息(ID号)和聊天内容。将其封装为数据包写入网络连接管理对象的发送缓冲区内并提请SEND事件。(3)网络连接管理对象收到SEND消息后将发送缓冲区中内容发送出去。(4)服务端网络连接收到数据包后(接收过程上一章已有详细分析),将其送给服务端逻辑处理层(5)服务器逻辑处理层仅解开包头,得知为聊天信息,从包头中获得发送方和接收方的ID号,并想网络传输控制模块发出相应指令。(6)网络传输控制模块在得到指令后,通过MAP中关联信息在连接队列中找出接收方ID对应的连接管理对象,将数据复制入其发送缓冲区中进行发送。(7)接收方客户端网络连接管理对象收到网络数据后,通过预处理包头得知为聊天信息数据,并从包头中获取了数据发送方ID,将数据地址作为聊天消息到来的系统消息发送给逻辑处理层。(8)逻辑处理层接收到消息后,根据数据地址将数据读出并解包,得到对方的聊天信息,并通过对方ID找到其在界面TREE列表中的对应项,向界面发送指令,告知有来自某项的聊天消息。(9)界面处理层根据逻辑层的指令,完成对聊天消息到来的处理,在聊天窗口已打开时激活并显示新消息,若窗口未打开,则更改对应图标为信息未读图标。2.5.3. 查找和添加好友的实现(1)用户在界面中ID号,并点击查找按纽,客户端界面向其逻辑处理层发送查找消息。(2)逻辑层响应查找消息,将用户名密码封装成登陆认证包,写进网络连接管理对象的数据发送缓冲区,并发出连接请求消息。(3)服务端的网络连接监听模块发现新来的连接请求,向服务端网络传输模块发出消息。(4)服务端网络连接管理模块暂时接受该连接请求,并收取其首次发来的数据,与数据库中数据信息进行查询并返回查询结果。2.5.4. 传送文件的实现(1)用户打开列表中某其他在线用户的聊天窗口,点击传送文件按钮选择文件。(2)逻辑层收到事件消息,获取聊天窗口所对应的用户信息(ID号)和文件信息。将其封装为数据包写入网络连接管理对象的发送缓冲区内并提请SEND事件。(3)接收方客户端网络连接管理对象收到网络数据后,通过预处理包头得知为聊天信息数据,并从包头中获取了数据发送方ID,弹出弹窗确认是否接受文件。(4)接受端若选择接受,则接受信息流并写入本地硬盘;若拒绝则丢弃该包并关闭连接。3. 源代码3.1. 服务器端public class SQLServerProcess extends Threadpublic SQLServerProcess(PropertyFile propertyFile)pf = propertyFile;sqlPool = new SQLPoolServer(pf);/*获取动态线程池.*/threadPool = Executors.newCachedThreadPool();setUserOutline();try serverSocket = new ServerSocket(PORT); catch (IOException e) e.printStackTrace();JOptionPane.showMessageDialog(null, PORT + 端口被占用,请停止此端口的服务再从新启动, 错误,JOptionPane.ERROR_MESSAGE);System.exit(0);/*启动垃圾处理*/new GC();new MyTray(sqlPool, threadPool, serverSocket);start();/* * 静态方法.获取本机IP地址. * return String 本机IP地址的字符串. * */public static String getLocalAddress()String ip = null;try ip = InetAddress.getLocalHost().getHostAddress(); catch (UnknownHostException e) return null;return ip;/* * 服务器启动时. * 将所有用户设置为不在线状态. * */private void setUserOutline()/*获取数据库连接资源*/DBSource db = sqlPool.getSQLServer();String SQL = UPDATE USERIPINFO SET STATUS = 0;try Statement stat = db.getStatement();db.setAutoCommit(false);stat.executeUpdate(SQL);mit(); catch (SQLException e) db.rollback();e.printStackTrace();finally/*释放资源*/db.releaseConnection();Overridepublic void run() while (!serverSocket.isClosed() try /* 监听服务器端口 */threadPool.execute(new ProcessThread(serverSocket.accept(); catch (IOException e) e.printStackTrace();3.2. 客户端public class ServiceFactory /* 登陆 */public static final String TASK_LOGIN = 0;/* 注销 */public static final String TASK_LOGOUT = 1;/* 新用户注册 */public static final String TASK_NEWUSER = 2;/* 更新用户资料 */public static final String TASK_UPDATAINFO = 3;/* 查看好友资料 */public static final String TASK_GETINFO = 4;/* 搜索好友 */public static final String TASK_SEARCH = 5;/* 添加好友 */public static final String TASK_ADDTION = 6;/* 删除好友 */public static final String TASK_REMOVE = 7;/* 离线消息 */public static final String TASK_LEFTINFO = 8;/* 获取更改密码 */public static final String TASK_PASSWORD = 9;/* 其他跟新 */public static final String TASK_NORMAL = 10;private static final String TYPE = tocol.tcp.server.LoginService,tocol.tcp.server.LogoutService, tocol.tcp.server.RegisterService,tocol.tcp.server.UpdateInfoService,tocol.tcp.server.FriendInfoService, tocol.tcp.server.SearchService,tocol.tcp.server.AddtionService, tocol.tcp.server.RemoveService,tocol.tcp.server.LeftInfoService, tocol.tcp.server.PasswordService ;public static Service getService(String serviceType, String IP, int port) Class c;Constructor constructor;try c = Class.forName(TYPEInteger.parseInt(serviceType);/* 带参数的构造器. */constructor = c.getConstructor(TCPServer.class);return (Service) constructor.newInstance(new TCPServer(IP, port); catch (Exception e) e.printStackTrace();return null;4. 总结本论文详细的介绍了一个即时通信系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 量子力学原理入门:大学物理实验课程教案
- 高纯石英砂生产线项目可行性研究报告(参考范文)
- 2025年心理学中级职称考试试题及答案
- 2025年行政职业能力测验试题及答案
- 2025年天文学基础知识测试试卷及答案
- 2025年胜任力与职业发展考试试题及答案
- 2025年农业推广师职业考试试卷及答案
- 2025年经济政策分析与评估测试卷及答案
- 2025年国际关系理论相关考试试题及答案
- 2025年公共卫生政策与管理考试试题及答案
- 历史(湖北卷)2025年中考考前押题最后一卷
- 2025年初中学业水平考试地理试卷(附答案)
- 2025年时事政治考试100题(含参考答案)
- 妈咪爱心小屋管理制度
- 浙江省金华市卓越联盟2024-2025学年高二下学期5月阶段性联考语文试卷(含答案)
- 中国狼疮肾炎诊治和管理指南(2025版)解读
- 福建省厦门市2023-2024学年高二下学期期末质量监测历史试题(解析版)
- 医美机构医废管理制度
- 2025CSCOCSCO宫颈癌的诊疗指南更新
- 居家适老化改造指导手册(2025年版)
- 职业技能等级认定考试保密协议书
评论
0/150
提交评论