惠州学院网络通信程序设计课程设计

合集下载

基于UDP网络通信系统的服务端程序设计课程设计报告

基于UDP网络通信系统的服务端程序设计课程设计报告

毕业论文声明本人郑重声明:1.此毕业论文是本人在指导教师指导下独立进行研究取得的成果。

除了特别加以标注地方外,本文不包含他人或其它机构已经发表或撰写过的研究成果。

对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。

本人完全意识到本声明的法律结果由本人承担。

2.本人完全了解学校、学院有关保留、使用学位论文的规定,同意学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,允许此文被查阅和借阅。

本人授权大学学院可以将此文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本文。

3.若在大学学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担,与毕业论文指导老师无关。

4.本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。

论文中凡引用他人已经发布或未发表的成果、数据、观点等,均已明确注明出处。

论文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的研究成果。

对本文的研究成果做出重要贡献的个人和集体,均已在论文中已明确的方式标明。

学位论文作者(签名):年月关于毕业论文使用授权的声明本人在指导老师的指导下所完成的论文及相关的资料(包括图纸、实验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属华北电力大学。

本人完全了解大学有关保存,使用毕业论文的规定。

同意学校保存或向国家有关部门或机构送交论文的纸质版或电子版,允许论文被查阅或借阅。

本人授权大学可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存或编汇本毕业论文。

如果发表相关成果,一定征得指导教师同意,且第一署名单位为大学。

本人毕业后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为大学。

本人完全了解大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存或汇编本学位论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版,允许论文被查阅和借阅。

c语言网络通信课程设计

c语言网络通信课程设计

c语言网络通信课程设计一、教学目标本课程旨在让学生掌握C语言在网络通信领域的基本原理和应用技能。

通过本课程的学习,学生将能够:1.知识目标:理解网络通信的基本概念、原理和技术;掌握C语言在网络通信编程中的基本语法和常用函数。

2.技能目标:能够运用C语言进行简单的网络通信程序设计;具备分析、解决网络通信问题的能力。

3.情感态度价值观目标:培养学生对网络通信技术的兴趣和好奇心,提高学生运用C语言进行创新实践的意识和能力。

二、教学内容本课程的教学内容主要包括以下几个部分:1.网络通信基本概念:计算机网络、网络协议、网络结构等。

2.C语言网络通信编程基础:C语言语法、数据类型、运算符、函数等。

3.常用网络通信函数和协议:socket编程、TCP/IP协议、UDP协议等。

4.网络通信程序设计实例:文件传输、聊天室、网络管理等。

5.实验环节:通过实际操作,巩固所学知识,提高实际编程能力。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:讲解基本概念、原理和技术,确保学生掌握基础知识。

2.讨论法:学生分组讨论,培养学生的思考和分析能力。

3.案例分析法:分析实际案例,让学生了解网络通信在实际应用中的原理和技巧。

4.实验法:通过实际操作,让学生亲手编写网络通信程序,提高实践能力。

四、教学资源为实现教学目标,我们将提供以下教学资源:1.教材:《C语言网络通信教程》。

2.参考书:提供相关领域的经典教材和论文,以拓展学生的知识视野。

3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高教学质量。

4.实验设备:提供计算机、网络设备等,确保学生能够进行实际操作。

五、教学评估本课程的教学评估将采用多元化方式,全面、客观地评价学生的学习成果。

评估方式包括:1.平时表现:考察学生在课堂上的参与度、提问回答、小组讨论等,占总评的30%。

2.作业:布置课后编程作业,让学生巩固所学知识,占总评的20%。

3.考试:进行期中和期末考试,测试学生对课程知识的掌握程度,占总评的50%。

实验九:网络通信程序设计

实验九:网络通信程序设计

西华大学实验报告(理工类)开课学院及实验室: 实验时间 : 年 月 日一、实验目的1、了解IP 地址、域名、端口号、协议的基本概念。

2、了解两种网络协议TCP 、UDP 的基本概念。

3、掌握IPAddress 类和IPEndPoint 类的基本属性。

4、掌握服务端程序与客户端程序的结构。

5、学会面向连接的套接字编程。

二、实验原理1、网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通信。

网络编程中有两个主要的问题:一是如何准确地定位网络上一台或多台主机,另一个就是找到主机后如何可靠、高效地进行数据传输。

在TCP/IP 协议中IP 层主要负责网络主机的定位,数据传输的路由,由IP 地址可以唯一的确定Internet 上的一台主机。

而TCP 层则提供面向应用的数据传输机制,这是网络编程的主要对象,一般不需要关心IP 层是如何处理数据的。

2、套接字是源IP 地址和目的IP 地址以及源端口号和目的端口号的组合。

要通过Internet 进行通信,至少需要一对套接字,其中一个运行在客户端,称之为ClientSocket ,另一个运行于服务器端面,称为ServerSocket 。

根据连接启动的方式以及本地要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听、客户端请求、连接确认。

3、在使用面向连接的套接字时(TCP ),我们首先必须要知道建立这个连接的过程,也就是我们常说的三次握手的过程,连接建立好之后,再进行数据的传输,数据传输完毕则关闭连接,此时,基于连接的通信则要进行四次挥手过程才能断开整个连接。

4、使用UDP 协议进行网络通信,不需要事先建立连接,知道对方的地址即可发送或接收数据。

三、实验设备、仪器及材料Windows环境计算机、Visual Studio 2012软件四、实验步骤(按照实际操作过程)要求:设计一个Windows 窗体应用程序,能够实现一对一聊天。

具体实现步骤参考教材239页案例9-3.五、实验过程记录(数据、图表、计算等)六、实验结果分析及问题讨论1、什么是套接字?2、TCP和UDP有什么区别?。

网络与通信课程设计指导书(共5篇)

网络与通信课程设计指导书(共5篇)

网络与通信课程设计指导书(共5篇)第一篇:网络与通信课程设计指导书《网络与通信》课程设计任务书本课程培养学生在充分进行需求分析的基础上,根据实际需求,建立一个中小型单位的计算机网络,并加以管理和维护,使学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、初步设计和解答与网络应用相关的问题,能够举一反三。

总体要求如下:新时代公司是一家食品生产公司,目前大约140名员工,公司下设生产车间,办公室,财务部,研发部,市场部和售后服务部共计6个部门,共有90台需要上网的计算机。

其中,生产车间在一楼,共15台计算机,其余部门均在2楼,每个部门15台计算机.该公司目前需要进行企业信息化建设,需要在内部建立一个局域网。

每个部门都需要建立自己的子网,并根据自己部门的特点安装一些软件。

请针对该公司的情况,在充分考虑技术的前瞻性和经济性的前提下设计一份网络规划书。

目前已经申请到一个B类网络:141.18.0.0/16。

请根据该单位的特点和要求,帮助该单位设计一个网络,具体要求如下:一.可行性分析报告具体内容:建立企业内部信息系统的必要性,可以获得的预期收益,公司需要投入的资金以及相关的支持,可以预期的资金风险等。

二.设计方案的比较具体内容:目前主流的网络设计方案比较,包括拓扑结构的比较,造价的比对等。

三.详细硬件设计方案具体内容:企业内网的拓扑结构图(要求使用Packet Tracer绘制),布线方案,硬件设备预算清单等。

四.必须的软件及配置具体内容:各部门最起码需要安装的软件及其功能简介,子网IP 地址的划分等。

五.后续工作具体内容:网络建成之后的维护工作和人员培训。

包括需要的维护人员的数量和知识要求,员工培训的时间,可以为该公司提供的技术支持等。

考核方式1.考核方式:本课程考核采取课程设计报告与提问相结合的方法。

2.成绩核定办法:课程设计报告:提问=80%:20%推荐教材及主要参考资料[1][2] 谢希仁.计算机网络(第五版).电子工业出版社,2008.1 Andrew S puter Networks(Fourth Edition).Pearson Education,2002.8[3] Andrew S Tanebaun,熊桂喜等译.Computer Networks(Third Edition).Prentice-Hall,1996.清华大学出版社,1998.7[4][5][6] 谢希仁.TCP/IP协议族(第3版).清华大学出版社,2006.4 马海军.TCP/IP协议原理与应用.清华大学出版社,2005.3 Douglas E Comer.Internetworking with TCP/IP.Volume I: Principles, Protocols, and Architecture.1991Volume II: Design, Implementation, and Internals.1991Volume III: Client-Server Programming and Applications.1993[7]James F Kurose and Keith W puter Networking: A Top-Down Approach Featuring the Internet.Addison Wesley,2001第二篇:IE课程设计指导书IE信息系统课程设计指导书课程设计目的和内容一、课程设计的目的《IE信息系统》的设计与开发是基于管理信息系统、数据库技术、软件开发技术的综合性实践活动。

网络通信课程设计方案模板

网络通信课程设计方案模板

一、课程概述1. 课程名称:网络通信2. 课程目标:使学生掌握网络通信的基本原理、技术手段和实际应用,提高学生的网络通信设计能力。

3. 课程内容:网络体系结构、网络协议、传输介质、网络设备、网络互连、网络安全、网络应用等。

二、教学大纲1. 网络基础- 网络体系结构- 网络协议- 传输介质- 网络设备2. 网络互连- 网络互连设备- 网络互连技术- 网络拓扑结构3. 网络安全- 网络安全概述- 网络攻击与防范- 加密技术4. 网络应用- Internet应用- 网络管理- 网络编程三、教学策略1. 采用案例教学法,通过实际案例引导学生理解网络通信原理。

2. 结合实验课,让学生动手实践,提高学生的动手能力和实际操作能力。

3. 利用多媒体教学手段,如PPT、视频等,使教学内容更加生动、形象。

4. 鼓励学生自主学习,通过查阅资料、讨论等方式,提高学生的综合素质。

四、教学方法1. 讲授法:系统讲解网络通信的基本概念、原理和技术。

2. 案例分析法:通过分析实际案例,使学生更好地理解网络通信技术。

3. 实验法:通过实验操作,让学生掌握网络通信设备的配置和调试方法。

4. 讨论法:组织学生进行课堂讨论,激发学生的思维,提高学生的口头表达能力。

五、教学资源1. 教材:选用权威、实用的网络通信教材。

2. 课件:制作多媒体课件,包括PPT、视频等。

3. 实验指导书:编写详细的实验指导书,指导学生进行实验操作。

4. 网络资源:提供相关网络通信资料,供学生查阅和学习。

六、考核方式1. 平时成绩:包括课堂表现、实验报告、作业等。

2. 期末考试:书面考试,考查学生对网络通信知识的掌握程度。

3. 课程设计:要求学生完成网络通信课程设计,考察学生的实际设计能力。

七、教学进度安排1. 网络基础(2周)2. 网络互连(3周)3. 网络安全(2周)4. 网络应用(2周)5. 课程设计(3周)八、预期成果通过本课程的学习,学生能够:1. 掌握网络通信的基本原理和技术。

网络通信课程设计

网络通信课程设计

S1 E0/2
S1
S1
S1
S1
E0/13 E0/14 E0/23 E0/24
S2 E0/2
R1 E1
S2 E0/13
R2 E0
S2 E0/14
R2 E1
S2 E0/23
PCC
S2 E0/24
PCD
PCA PCB
PCC PCD
E0/1
E0/24
E0/1
E0/24
S1
S2
E0
E1 E0
E1
R1
R2
注意事项
二、学习实践要求
通过本课程的学习,学生应达到以下要求: 1.对计算机网络的物理构成有清晰的了解; 2.理解计算机网络体系结构的内涵; 3.熟悉计算机网络的分类及常用的网络协议; 4.基本掌握计算机网络软件的开发方法; 5.具备管理计算机网络的基本知识及技能;
三、应实践掌握的内容
网络通信课程设计
网络工程系 2011
一、课程设计目的
《网络通信课程设计》是网络工程专业的大型 作业课。是培养计算机领域从事网络技术及应 用工作的高级工程技术人才的必修课程。
本课程的主要任务是使学生对所学《计算机网 络》知识从实践上有一个较清晰的了解。对当 前计算机网络的主要种类和常用的网络协议有 更进一步的深入认识。学会计算机网络设计和 日常管理及维护的最基本方法。
BGP BGP
OSPF
邻 居 建 立 、 报 文 交 换
路路协 由由议 策属基 略性本
、分 析 、
路 由 聚状 合态 、转

网 络 布 线 测 试
网 络 协 议 测 试
网 络 故 障 诊 断
PIM-SM
IGMP PIM-DM

网络通信课程设计

网络通信课程设计

《网络通信课程设计》综合学习报告班级:网络10-2班学号:08103635姓名:xxx网络工程系2013.7OSI(Open System Interconnection),开放式系统互联参考模型。

是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为了7层,即物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

每一层都有相关、相对应的物理设备,比如常规的路由器是三层交换设备,常规的交换机是二层交换设备。

OSI七层模型是一种框架性的设计方法,建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题,其最主要的功能就是帮助不同类型的主机实现数据传输。

它的最大优点是将服务、接口和协议这三个概念明确地区分开来,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。

每一层的作用:1.物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。

它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。

2.数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。

这一层通常还提供错误检测和纠正,以确保数据的可靠传输。

3.网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。

Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。

4.传输层:定义了一些传输数据的协议和端口号,如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP 特性恰恰相反,用于传输可靠性要求不高,数据量小的数据)。

主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。

常常把这一层数据叫做段。

5.会话层:通过传输层建立数据传输的通路。

主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。

网络通信课程设计

网络通信课程设计

实验五利用桥接和代理互联网络1、设计主题(1)利用桥接是两台笔记本可以共享网络,掌握桥接模式原理和实现方法,了解在AP上实现无线链路与有线以太链路的互联互通(2)使用代理服务器实现两台PC机的网络共享,思考工作原理(3)了解桥接和代理服务器连通两台pc的过程、原理以及二者的区别2、设计内容(1)使用两台笔记本电脑(都装有无线网络适配器),实现其中一台连接Internet,另一台通过桥接的方式连接到第一台PC上,实现两台PC机都能访问Internet网络。

(2)使用两台式PC机以及一台交换机,将他们用交换机连通,其中一台可以访问Internet网络,将其设置成为代理服务器,然后将另一台电脑加入到访问表中,实现两台计算机都能访问Internet网络。

3、设计步骤(1)桥接实验说明:①PCA 和PCB 如果桥接成功,那么二者都可以通过DHCP 动态获得IP 地址;②由于使用了桥接共享网络,PCA 和PCB 都可以玩访问Internet PCA 的设置:桥接设置设备PCAPCBPCB的相关设置:(2)通过代理服务器Ip:192.168.0.3/24 R 1PCAPCB相关配置:服务器端:设置“自动检测”本局域网IP地址局域网内网卡设置连接外网的网卡,设置成自动获取iP地址客户端设置点击浏览器的“Internet选项”选择局域网设置然后如图设置:设置主机IP(在一个局域网内)3、设计有关配置代码及验证(1)实验一验证PCA测试:可以连通外网PCB的测试PCB也可以连通外网(2)实验二的验证:通过代理服务器端的日志功能,可以清楚的看到客户端在什么时间访问了哪些网络5、设计体会通过本次实验我深刻的理解了,如何使用网桥以及代理服务器连通连个计算机,实现了计算机资源的共享,首先对于网桥,网桥可以连接从属于不同协议的网络,其次网桥可以减少冲突域,其工作作用在链路层,使用M A C地址作出转发决定。

桥接的网络位于一个单独的逻辑网络地址空间之内。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网络通信程序设计课程设计中文题目:mini QQ 2012局域网通信系统 英文题目:mini QQ 2012 LAN communication system姓 名: 林 泽 全班 级: 09网络工程学 号: 091402116完成时间: 2012年6月 指导老师: 肖东老师惠州学院 HUIZHOU UNIVERSITY摘要即时通信在广域网上飞速发展,由于越来越多的企业对于电子化办公的深入,即时通信系统对于局域网中的需求增多。

本文首先介绍了即时通信的开发背景、应用价值和意义等,然后对网络协议、多线程处理等即时通信的关键技术进行了分析和研究。

在此基础上实现了一个基于JAVA的局域网即时通信系统的基本模型。

此系统使用多线程处理来改进系统。

通过实验,在局域网环境下此系统运行良好,能实现即时通信的基本功能。

关键词:即时通信,局域网,多线程,网络协议AbstractInstant communication over the WAN rapid development, more and more enterprises in-depth for the electronic office, the increased demand for instant messaging system for LAN. This paper first introduces the development background of the instant communication, value and significance, then the key technologies of instant communication on the network protocol, multi-threaded processing, analysis and research. On this basis, the basic model of a LAN instant messaging system based on JAVA. This system uses multithreading to improve the system. Through experiments in the LAN environment, this system is running well, to achieve the basic functions of instant messaging.Keywords: instant messaging, LAN, multi-threaded, network protocol目录1. 引言 (4)1.1.开发背景与意义 (4)1.2.开发工具与语言简介 (4)2. 正文 (5)2.1. 需求分析 (5)2.1.1. 系统功能要求设计 (6)2.1.2. 系统的模块设计 (6)2.1.3. 系统的性能需求 (7)2.2. 总体设计 (8)2.2.1. 系统结构图 (8)2.2.2. 层次功能图 (8)2.2.3. 系统流程 (9)2.3. 详细设计 (9)2.4. 系统实现 (16)2.5. 调试、运行和维护 (18)2.5.1. 黑盒测试 (19)2.5.2. 白盒测试 (19)2.5.3. 调试 (19)3. 结束语 (20)参考文献 (21)评分表 (22)1.引言1.1.开发背景与意义随着互联网技术信息技术的迅猛发展以及计算机技术的广泛应用,即时通信IM(Instant Messaging)作为一种方便、高效、廉价的交流方式被广泛运用于局域网(LAN)乃至广域网(WAN)。

为人们的日常交流和资源共享以及传送信息和文件提供了方便、即时通信(IM)软件应运而生,且立即风靡全球。

现在我国流行的IM软件种类繁多,主要有国内腾讯公司的QQ,国外的有MSN、Skype、ICQ、AIM、X-lite、Yahoo Messenger等。

但在广域网的限制下主流即时通信软件服务器无法连接,这时开发局域网内的即时通信软件显得尤为重要。

本软件(mini QQ 2012)实现设计一个局域网即时通信软件,实现点对多、点对多即时通信,方便在局域网下的人们工作与交流。

1.2.开发工具与语言简介(1)JAVAJava 编程语言的风格十分接近C、C++语言。

Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心,Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。

在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。

它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。

不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。

与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。

全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。

“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。

这与微软公司所倡导的注重精英和封闭式的模式完全不同。

Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

Java 平台是基于 Java 语言的平台。

这样的平台目前非常流行,因此微软公司推出了与之竞争的.NET平台以及模仿 Java 的 C#语言。

(2)SwingSwing是一个用于开发Java应用程序用户界面的开发工具包。

它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。

Swing 开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。

工具包中所有的包都是以swing作为名称,例如javax.swing,javax.swing.event2.正文2.1.需求分析需求分析的过程可以说是一个对具体问题的反复理解和抽象的过程。

理解就是对现实问题的理解,要弄清楚究竟需要解决什么问题。

抽象就是出去问题的表面,提取问题的本质,建立问题的逻辑模型,以便于以后阶段的系统的设计实现。

需求分析阶段是软件产品生命周期中的一个重要阶段,其根本任务是确定用户对软件系统的需求。

所谓需求是指用户对软件的功能和性能的要求,就是用户希望软件能做什么事情,完成什么样的功能,达到什么性能。

通常需求分为两种类型:一种是功能性需求,一种是非功能性需求,这一点也需要有一种清楚的认识。

功能性需求是指需要计算机系统解决的问题,也就是对数据的处理要求,这是一类最主要的需求。

非功能性需求是指实际使用环境所要求的需求,往往是一些限制要求。

例如:性能要求,可靠性要求,安全保密要求,等等。

2.1.1.系统功能要求设计(1)服务器状态管理:主要实现管理员(mini QQ服务器端)开启聊天服务或关闭聊天服务(2)在线用户管理:主要实现管理员查看用户聊天内容是否违反相关规定(3)用户状态管理:主要实现管理员监视在线用户状态(4)发送系统消息:主要实现管理员向在线的所有用户或者某用户发送消息(5)登入登出聊天室:主要实现用户运行客户端,登入或登出聊天室(6)发送群聊信息:主要实现用户与聊天室所有人聊天(7)点对点私聊:主要实现用户选择某个人,进行私聊(8)发送聊天心情:主要实现用户在聊天过程中,发送聊天心情因此,细化后的需求规格说明表如下所示:2.1.2.系统的模块设计(1)服务器端模块(2)客户端模块2.1.3.系统的性能需求(1)硬件要求服务器端使用性能较好的服务器,客户端使用普通家庭的PC机。

(2)软件要求服务器端和客户端机器上都需要安装Windows 2000以上操作系统,JDK 1.6及以上版本。

2.2.总体设计在系统的需求分析阶段,我们已经知道系统“做什么”的问题了,现在我们要进入软件设计的阶段,去解决“怎么做”的问题。

在软件设计阶段,它分为总体设计和详细设计。

首先做总体设计,它是将软件的需求转化为数据结构和软件的系统结构。

然后是详细设计,即过程设计,通过对结构表示进行细化,得到软件的详细的数据结构和算法。

2.2.1.系统结构图基于以上的分析和研究,本文设计实现一个基于java的局域网通信系统。

该系统主要由客户端和服务器端两部分组成。

系统结构图如下图所示:2.2.2.层次功能图根据上面需求的分析,我们可以得到系统的层次功能图,结构如下所示:2.2.3.系统流程2.3.详细设计总体设计完成了软件系统的概要设计,规定了各个模块的功能以及模块之间的联系,进一步就要考虑实现各个模块规定的功能,这就是要进行详细设计。

在详细设计阶段,要决定各个模块的实现算法,并精确地表达这些算法。

该系统采用多线程,基于Java平台。

同时,采用自己编写程序皮肤,开发出界面友好、舒服的交互界面。

同时添加了托盘功能、消息声音提示功能等附加功能。

(1)服务器端多线程接受用户连接请求的ServerAccessUserThread类public class ServerAccessUserThread extends Thread {/* 实例化SeverSocket对象*/ServerSocket server;JComboBox combobox;JTextArea textarea;JTextField textfield;UserList userInfoList;/* 实例化用户对象 */User client;ServerReceiveThread recvThread;public boolean isStop;/* 构造函数,将相关控件传给ServerSocket线程 */public ServerAccessUserThread(ServerSocket server, JComboBox combobox, JTextArea textarea, JTextField textfield, UserList userInfoList) {this.server = server;bobox = combobox;this.textarea = textarea;this.textfield= textfield;erInfoList = userInfoList;isStop=false;}public void run() {while(!isStop&&!server.isClosed()) {/* 实例化用户节点 */client = new User();try {/* 实例化一个server */client.socket = server.accept();/* 获取用户的输入和输出显示到相应控件 */client.output = newObjectOutputStream(client.socket.getOutputStream());client.output.flush();client.input = newObjectInputStream(client.socket.getInputStream());ername = (String)client.input.readObject();combobox.addItem(ername);userInfoList.add(client);textarea.append("user【"+ername+"】上线"+"\n");textfield.setText("当前有"+userInfoList.getCount()+"人在线\n");/* 实例化消息接收线程,并将线程开启 */recvThread = newServerReceiveThread(textarea,textfield,combobox,client,userInfoList);recvThread.start();} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}}}}(2)服务器端用户类Userpublic class User {String username=null;Socket socket=null;ObjectOutputStream output=null;ObjectInputStream input=null;User next=null;}(3)服务器端用户列表类UserListpublic class UserList {User root;User pointer;int count;public UserList() {root = new User();root.next = null;pointer = null;count = 0;}public void add(User n) {pointer = root;while(pointer.next!=null) {pointer = pointer.next;}pointer.next = n;n.next = null;count++;}public void del(User n) {pointer = root;while(pointer.next!=null) {if(pointer.next==n) {pointer.next = pointer.next.next;count--;break;}}}public int getCount() {return count;}public User find(String username) {if(count==0) {return null;}pointer = root;while(pointer.next!=null) {pointer = pointer.next;if(ername.equalsIgnoreCase(username)) { return pointer;}}return null;}public User find(int index) {if(count==0) {return null;}if(index<0) {return null;}pointer = root;int i = 0;while(i<index+1) {if(pointer.next!=null) {pointer=pointer.next;} else {return null;}i++;}return pointer;}}(4)客户端多线程类ClientReceiveThreadpublic class ClientReceiveThread extends Thread {private JComboBox combobox;private JTextArea textarea;Socket socket;ObjectOutputStream output;ObjectInputStream input;public ClientReceiveThread(Socket socket, ObjectOutputStream output, ObjectInputStream input, JComboBox combobox, JTextArea textarea) { this.socket = socket;this.output = output;this.input = input;bobox = combobox;this.textarea = textarea;}public void run() {while (!socket.isClosed()) {try {String type = (String) input.readObject();if (type.equalsIgnoreCase("系统信息")) {String sysmsg = (String) input.readObject();textarea.append("系统信息:" + sysmsg);} else if (type.equalsIgnoreCase("服务器关闭")) {output.close();input.close();socket.close();textarea.append("服务器已关闭!\n");break;} else if (type.equalsIgnoreCase("聊天信息")) {String message = (String) input.readObject();textarea.append(message);} else if (type.equalsIgnoreCase("用户列表")) {String userlist = (String) input.readObject();String[] usernames = userlist.split("\n");combobox.removeAllItems();int i = 0;combobox.addItem("所有人");while (i < usernames.length) {combobox.addItem(usernames[i]);i++;}combobox.setSelectedIndex(0);}} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}}}}(5)系统托盘功能实现方法SystemTrayInitial/* 添加托盘功能 */public void SystemTrayInitial() {if (!SystemTray.isSupported())// 判断当前系统是否支持系统栏return;try {String title = "miniQQ2012 Server"; // 系统栏标题String company = "Copyright by lowkey from network09"; // 系统栏内容SystemTray sysTray = SystemTray.getSystemTray();// 系统栏图标Image image = Toolkit.getDefaultToolkit().getImage("res/logo.png");TrayIcon trayicon = new TrayIcon(image, title + "\n" + company,createMenu());trayicon.setImageAutoSize(true);trayicon.addActionListener(new SysTrayActionListener());sysTray.add(trayicon);trayicon.displayMessage(title, company, );} catch (Exception e) {e.printStackTrace();}}(6)系统界面UI中自写容器类ImagePanelpublic class ImagePanel extends JPanel {private static final long serialVersionUID = -731012374666375667L;private Image img;/** 构造函数首先接受待绘制图像,并将其存入变量img以备后用。

相关文档
最新文档