Java网络聊天室课程设计说明书(含源程序)

合集下载

JAVA网络聊天室课程设计

JAVA网络聊天室课程设计

网络编程综合实训聊天室程序设计专业 计算机科学与技术学生姓名 班级 学号任课教师 完成日期2014年1月目录1 课程设计的目的、要求 (3)2 系统需求分析 (4)2.1系统名称 (4)2.2 主体功能 (4)2.3 开发环境 (4)3 系统总体设计 (4)3.1 系统的功能模块划分 (4)3.2 系统流程图 (5)4 系统详细设计 (6)4.1 客户端模块设计 (6)4.1.1 用户登录模块设计 (6)4.1.2 聊天室用户列表模块设计 (7)4.1.3 聊天面板模块设计 (8)4.1.4 聊天输入面板模块设计 (9)4.1.5 悄悄话模块设计 (9)4.1.6 客户端的总体架构 (10)4.2 服务器端模块设计 (15)5 运行结果 (20)5.1 客户端 (20)5.2服务器端 (24)6 个人小结 (24)1 课程设计的目的、要求【目的】:综合运用本课程及计算机网络的相关知识设计并实现一个网络应用程序,以Java作为开发平台,通过实践进一步理解面向对象程序设计的思想和方法,利用Java语言进行程序设计的能力,提高对网络编程的综合应用能力。

课程设计将课本上的理论知识和实际应用相结合,锻炼学生发现问题、分析问题和解决问题的能力,加强学生研发、编写、调试程序的能力,培养学生在项目开发中团队合作精神、创新意识及能力,提高学生科技论文写作能力,规范完成课程设计报告。

【要求】:编写一个网络聊天室应用程序,要求实现多个聊天室及聊天功能,能查看聊天室列表、查看每个聊天室用户列表,能够实现群聊和私聊。

用户能够自己选择进入聊天室,也可以随时退出聊天室。

2 系统需求分析2.1系统名称聊天室程序设计2.2 主体功能1、启动服务器2、进入客户端界面3、登录聊天室4、查看聊天室成员列表5、群聊6、私聊7、退出聊天室8、关闭服务器2.3 开发环境MyEclipse3 系统总体设计3.1 系统的功能模块划分本系统主要有服务器端和客户端两部分。

java课程设计报告__利用java实现简单聊天室(可编辑)

java课程设计报告__利用java实现简单聊天室(可编辑)

java课程设计报告_-_利用JAVA实现简单聊天室利用JAVA实现简单聊天室1.课程设计目的在当今的信息时代,越来越多的聊天工具被应用,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程等特点。

使用Java 语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入式设备进行应用程序的开发Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。

此次课程设计的题目为简单的聊天室,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。

使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。

2.设计方案论证2.1设计思路Java是一种简单的,面对象的,分布式的,解释的,键壮的安全的,结构中立的,可移植的,性能很优异的多线程的,动态的语言Java去掉了C++语言的许多功能,如:指针运算、结构、typedefs、#define让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。

这将减少平常出错的50%。

而且,Java很小,整个解释器只需215K的RAM。

Java简单聊天室,它是图形界面、线程、流与文件等技术的综合应用其界面主要采用了包程序实现了的基本功能有:Pentium 2.8GHz以上内存:256MB以上硬盘空间:80G以上操作系统:Windows XP运行环境:JDK,JCreator 2.5 程序功能图及程序相关说明主功能框图图1 程序基本框图表1 聊天室基本功能表序号文件名主要功能1ServerHost被服务器调用2Client显示聊天室3ClientUser被客户端调用4LogIn注册登陆5Objecting连接服务器6Server启动服务器程序代码是说明程序中引入的包:package Chat;import .*;import java.awt.*;import t.*;import javax.swing.*;import java.util.*;import java.io.*;(1)服务器端代码中用户自定义类:类名:Server作用:服务器启动继承的接口名:ActionListenerpublic class Server implements ActionListener定义的对象:count //记录点机关闭按钮次数2次关闭soconly //只有SOCKET,用于群发sockets //所有客户的SOCKETsocket_thread //Socket所在的线乘,用于退出;frame // 定义主窗体panel//定义面板start,stop //启动和停止按钮主要成员方法:public void center //定义小程序查看器的位置public void actionPerformed //定义处理异常机制定义子类:serverRun,Details继承的父类名:Threadclass serverRun extends Thread //启线乘用于接收连入的Socket class Details extends Thread //具体处理消息的线乘,只管发送消息创建一个ServerSocket 对象,用于接受指定端口客户端的信息ServerSocket server new ServerSocket "1234" ;接受请求时候,通过accept 方法,得到一个socket对象。

java课程设计报告(java聊天室)

java课程设计报告(java聊天室)

Java聊天室课程设计一、需求分析1.1开发背景在信息化社会的今天,网络飞速发展,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似MSN、QQ,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具的想法,且通过制作该程序还能更好的学习网络软件编程知识。

网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。

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

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

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

目前较为流行的网络编程模型是客户机/服务器(C/S)结构。

即通信双方一方作为服务器等待客户提出请求并予以响应。

客户则在需要服务时向服务器提出申请。

服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也得到响应的服务。

1.2设计要求本课程设计的目标是利用套接字socket()设计一个聊天程序,该程序基于C/S模式,客户机器向服务器发聊天请求,服务器应答并能显示客户机发过来的信息。

1.3设计目的通过设计一个网络聊天程序,对套接字、数据报通讯、URL、与URLConnectiom的相关知识有详细的了解和充分的认识。

能将相关的只是运用到相关的实践中去。

1.4功能实现服务器的主要功能有1)在特定端口上进行侦听,等待客户连接2)用户可以配置服务器的真挺端口3)向已经连接服务器的客户发送系统消息4)统计在线人数5)当停止服务时,断开所有用户的连接客户端的主要功能1)连接到已经开启聊天服务的服务端2)用户可以配置要连接服务器端的ip地址和端口号3)用户可以配置连接后显示的用户名4)当服务器开启时。

java实现聊天系统(计算机网络课程设计报告).doc

java实现聊天系统(计算机网络课程设计报告).doc

计算机网络课程设计报告学生姓名学号班级指导教师设计时间目录第一章系统描述1.1设计目的 (3)1.2系统设计任务 (3)1.3系统设计分析 (3)1.4系统功能分析 (4)第二章功能模块结构2.1模块划分 (5)2.2模块结构图 (5)2.1模块功能 (5)第三章模块算法实现3.1 服务器实现 (6)3.2 客户端实现 (9)第四章运行结果 (13)第五章课程设计总结 (17)第六章附录6.1 参考文献 (19)6.2 源代码 (19)第一章系统描述1.1设计目的1.学习网络编程的知识,掌握网络编程的方法。

2.进一步掌握编程思想与编程技巧,做到模块化程序设计,3. 强化语言学习,尤其是Java的图形界面与多线程,需反复练习,熟练掌握。

1.2系统设计任务聊天室软件的设计与开发:基本要求可以完成群聊、私人聊天,实时发送和显示聊天信息,完成好友列表;进一步要求带表情,附件发送,聊天信息的加密传送,设置黑名单等。

学习通信编程Socket接口编程,使用TCP或UDP接口完成信息传送,利用多线程技术实现服务器端的多个TCP连接的建立。

1.3系统设计分析一.实现网络聊天室编程,关键在于Socket通信,程序的功能都是在Socket 的基础上一层一层增加的。

实现Socket通信的基本方法为以下4个步骤。

(1)在客户端与服务器端创建相应的ServerSockot/Socket实例。

(2)打开连接到Socket的输入输出流(3)利用输入输出流,按照一定的协议(TCP协议)对Socket进行读写操作(4)关闭输入输出流和Socket我们要实现的功能都是在第3步对Socket的输入输出流做相应的操作二.因为是多客户端,所以必须用线程进行控制,不同的处理线程为不同的客户服务,主线程只负责循环等待,处理线程负责网络连接,接受客户输入的信息,再做相应的处理。

1.4系统功能分析本系统可以通过网络进行聊天,采用客户端服务器模式,所以程序简介清晰易懂,而且用户都是在客户端进行活动,方便对用户的管理,也使得程序运行与差错简单起来。

JAVA课程设计--简单的网络聊天程序

JAVA课程设计--简单的网络聊天程序
s.close();
}
catch (Exception e)
{
//System.exit(-1);
}
}
public void connect()
{
try
{
s = new Socket("127.0.0.1", 8888); //此IP可以修改,如果要可以达到很远的距离聊天不但需要IP地址,
本 科 课 程 设 计
课程设计题目: 简单的网络聊天程序
课程设计报告
1.设计目的:
课程设计题目:简单的网络聊天程序
目的与任务:Байду номын сангаас
目的:熟悉网络编程的知识和技能,掌握Socket编程的方法。
任务:完成网络聊天程序的编制与调试。
要求:
1.分析聊天程序的功能需求。
2.采用自己熟悉的开发环境和语言完成设计任务,如:Java、C++、Visual Basic、SQL server等。
工作安排:
利用网络程序编程来完成这一次课程设计,并且用到多线程和图形界面处理,最后完成课程设计报告。
提交内容:
每位同学提交书面设计报告一份(每人一份)
程序源代码
批语:
成绩:
2014年9月1日
在当今的信息时代,越来越多的聊天工具被应用 ,Java语言是当今流行的网络编程语言,它具有面向对象、与平台无关、安全、多线程 等特点。使用Java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入 式设备进行应用程序的开发。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼我们熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。

java_课程设计_聊天窗口

java_课程设计_聊天窗口

java_课程设计_聊天窗口JAVA课程设计----------聊天窗口姓名:学号:班级:计科2老师:赵宏宇设计了一个简单的聊天室程序,用于实现聊天室的基本功能,分为了客户端和服务器端,服务器端可以接收多个连接,客户端可以连接服务器。

客户端发送消息给服务器端,服务器接收消息,转发给所有的客户。

一、源程序代码服务器端源代码,ServerTest.javaimport java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.DataInput;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import .ServerSocket;import .Socket;import java.util.Enumeration;import java.util.Vector;import com.sun.corba.se.spi.activation.ServerHeldDown;public class ServerTest {public ServerTest(int port) throws IOException{ServerSocket server=new ServerSocket(port);while(true){Socket conn=server.accept();DataInputStream inputStream = new DataInputStream(conn.getInputStream());String who=inputStream.readUTF();System.out.print("Clinet"+"(IP"+conn.getInetAddress()+")"+ who+"enter!"+"\n");ServerHander cn=new ServerHander(who,conn);cn.start();}}public static void main(String[] args)throws IOException {new ServerTest(9001);// TODO Auto-generated method stub}}class ServerHander extends Thread{Socket socket;DataInputStream in;DataOutputStream out;String who;protected static Vectorclientlist=new Vector();public ServerHander(String name,Socket socket)throws IOExceptionthis.who=name;this.socket=socket;in=new DataInputStream(new BufferedInputStream(socket.getInputStream()));out=new DataOutputStream(new BufferedOutputStream(socket.getOutputStream()));}public void run(){try{clientlist.addElement(this);sendallclient("欢迎"+who+"进入聊天室");while(true){String msg=in.readUTF();sendallclient(who+"说:"+msg);}}catch(IOException e){System.out.println("Client exit or error.");}clientlist.removeElement(this);sendallclient(who+"退出!");try{socket.close();}catch (IOException ex)System.out.println("Connection has been closed");}}protected static void sendallclient(String msg){synchronized (clientlist) {Enumerationallclients=clientlist.elements();while(allclients.hasMoreElements()){ServerHander serh=(ServerHander)allclients.nextElement(); try{serh.out.writeUTF(msg);serh.out.flush();}catch(IOException exc){serh.interrupt();}}}}}客户端源程序,ClientTest.javaimport java.awt.BorderLayout;import java.awt.Frame;import java.awt.TextArea;import java.awt.TextField;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import .Socket;public class ClientT est {public ServiceFrame sf;private Socket csocket;private DataInputStream in;private DataOutputStream out;public static void main(String[] args) {// TODO Auto-generated method stubString who="";BufferedReader in=new BufferedReader(new InputStreamReader(System.in));System.out.print("请输入你的名字");try{who=in.readLine().trim();}catch(IOException e){e.printStackTrace();}new ClientTest(who,"127.0.0.1",9001);}public ClientTest(String who,String server,int port){sf=new ServiceFrame("客户端聊天窗口");sf.sendFD.addKeyListener(new ActListener(this,sf));sf.addWindowListener(new ExitListener(this));try{csocket=new Socket(server,port);in=new DataInputStream(new BufferedInputStream(csocket.getInputStream()));out=new DataOutputStream(new BufferedOutputStream(csocket.getOutputStream()));out.writeUTF(who);out.flush();while(true){sf.showTA.append("--"+in.readUTF()+"\n");}}catch(Exception e){System.out.println("Server error!");this.close();System.exit(0);}}protected void send(String msg){try{out.writeUTF(msg);out.flush();}catch(IOException e){}}protected void close(){try{sf.dispose();out.close();in.close();}catch(IOException ex){}}}class ServiceFrame extends Frame {protected TextArea showTA; protected TextField sendFD;public ServiceFrame(String winnm) {super(winnm);setLayout(new BorderLayout());add("North",showTA=new TextArea()); showTA.setEditable(false);add("South",sendFD=new TextField()); pack();show();sendFD.requestFocus();}}class ActListener extends KeyAdapter{ClientTest client;ServiceFrame sframe;public ActListener(ClientTest c,ServiceFrame sf) {client=c;sframe=sf;}public void keyPressed(KeyEvent e){if(e.getKeyCode()==KeyEvent.VK_ENTER){ client.send(sframe.sendFD.getText()); sframe.sendFD.setText("");}}}class ExitListener extends WindowAdapter {ClientTest client;public ExitListener(ClientTest c){client=c;}public void windowClosing(WindowEvent e) {client.close();System.exit(0);}}二、运行结果截图先运行服务器端,在运行客户端。

基于JAVA的聊天系统的设计与实现课程设计说明书

课程设计说明书设计题目:基于java的聊天系统设计与实现基于JAVA的聊天系统的设计与实现摘要网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。

目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。

该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。

前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。

后者通过与服务器建立连接,来进行客户端与客户端的信息交流。

其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。

开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server 模式)、网络编程的设计方法等。

在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。

经过分析这些情况,该聊天工具采用Eclipse为基本开发环境和java语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统关键词:即时通讯系统 B/S C/S MySQL Socket Swing目录第1章引言 (1)1.1 开发背景 (1)1.2 开发目的和意义 (1)1.3 论文研究内容 (2)第2章即时通讯系统的相关研究 (3)2.1 C/S开发模式 (3)2.2 B/S开发模式 (3)2.3即时通讯原理 (4)2.4 Java web 、Struts2、AJAX、JavaScript应用技术 (4)2.5 MySQL数据库应用技术 (4)2.6 Socket通信技术 (4)2.7 开发环境的搭建 (5)第3章系统分析 (6)3.1 系统基本功能描述 (6)3.2 可行性分析 (6)3.3 系统需求分析 (7)3.3.1功能分析 (7)第4章系统设计 (9)4.1 数据库设计 (9)4.2 系统模块设计 (10)4.2.1 聊天系统工作原理图 (10)4.2.2 系统功能模块图: (11)4.2.3 系统用例图: (11)4.2.4 活动图: (12)4.3 系统类设计 (14)4.3.1 Message类的设计 (14)4.2.2 截图类的设计 (15)4.2.3 聊天记录类的设计 (16)4.2.4 服务器线程类设计 (17)第5章系统实现 (18)5.1 实现概况 (18)5.2 注册模块 (18)5.2.1 流程图 (18)5.2.2 关键代码 (18)5.3 登录模块 (20)5.3.1 流程图 (20)5.3.2 关键代码 (20)5.4 聊天模块 (24)5.4.1 流程图 (24)5.4.2 关键代码 (24)5.5 文件模块 (28)5.5.1 流程图 (28)5.5.2 关键代码 (28)5.6 用户管理模块 (33)5.6.1 流程图 (33)5.6.2 关键代码 (34)5.7 其他功能的实现 (36)5.7.1 截图功能的实现 (36)5.7.2 聊天记录功能的实现 (37)5.7.3 服务端线程的实现 (38)5.8 用户界面的设计 (38)结语 (42)第1章引言1.1 开发背景随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。

JAVA课程设计报告聊天室

JAVA课程设计报告聊天室一、课程目标知识目标:1. 学生能理解网络编程的基本概念,掌握JAVA Socket编程的基础知识。

2. 学生能运用面向对象编程思想,设计并实现聊天室客户端与服务器的数据传输功能。

3. 学生了解并掌握多线程技术在网络编程中的应用。

技能目标:1. 学生能运用所学知识,独立编写并调试简单的聊天室程序。

2. 学生具备分析问题、解决问题的能力,能针对聊天室程序进行优化和改进。

3. 学生能在团队协作中发挥自己的作用,与他人共同完成一个完整的网络编程项目。

情感态度价值观目标:1. 学生培养对计算机编程的兴趣,增强学习JAVA的自信心。

2. 学生认识到团队合作的重要性,培养良好的团队协作精神。

3. 学生通过编程实践,体验创新与创造的乐趣,培养积极向上的学习态度。

本课程针对高年级学生,结合课本内容,注重理论与实践相结合,以提高学生的实际编程能力为主要目标。

课程要求学生在掌握基本知识的基础上,能够独立完成实际项目,培养其分析问题、解决问题的能力。

同时,课程强调团队协作,使学生学会与他人共同进步,共同成长。

通过本课程的学习,使学生达到知识、技能和情感态度价值观的全面提升。

二、教学内容1. 网络编程基础理论:介绍网络编程的基本概念,包括IP地址、端口号、协议等,使学生理解网络通信的基本原理。

- 教材章节:第三章 网络编程基础2. JAVA Socket编程:讲解Socket编程的原理,指导学生掌握客户端与服务器之间的数据传输方法。

- 教材章节:第四章 Socket编程3. 面向对象编程:运用面向对象编程思想,设计聊天室程序,包括类的定义、封装、继承与多态。

- 教材章节:第二章 面向对象编程基础4. 多线程技术:介绍多线程编程的概念,分析在聊天室程序中如何实现多用户并发通信。

- 教材章节:第五章 多线程编程5. 聊天室程序设计与实现:指导学生完成聊天室客户端与服务器的编写,实现基本的功能需求。

javaJAVA局域网聊天程序设计方案与实现(附源代码)

封面作者:PanHongliang仅供个人学习摘要随着互联网的发展,网络聊天工具作为一种交流工具,已经受到网民的青睐。

目前,出现了很多功能强大的聊天工具,其中应用比较广泛的有腾讯QQ、MSN-Messager等等。

即时通讯软件,是每一个上网用户都需要的工具,它除了能够让您迅速地在网上找到自己的朋友和伙伴之外,还可以实时交谈和传递信息,截止到目前,全球约有近3亿多人使用即时软件,正因为即时通讯软件拥有数以亿计的用户和增长的市场,所以各个公司都盯上了这个最大的市场,一时间,即时通讯市场硝烟四起。

对等网络(peer-to-peer,简称P2P),应用最初出现时和现在并不相同。

事实上可以认为它是若干不同技术以及流行趋势相结合的产物。

以下是导致P2P技术发展最重要的趋势:首先,一些新技术与软件工程的结合,形成了一种将工作分散的趋势。

P2P计算正是这种分散工作趋势的结果。

其次,在企业应用集成等因素的驱动下,过去十年渐渐形成从集中的单机系统转向分布式系统。

然而随着互联网的发展,全面的分布式计算也就成为一种迫切需求。

关键词:局域网聊天 P2P javaAbstractWith the development of the Internet,the chat tool as a communication tool, has been popularly accepted by netizens of all ages.At present, there are many powerful chat tools, of which Tencent QQ, MSN-Messager are much more prevalent.Instant messaging software is necessary for every one who connects to the internet, which can not only provide you a prompt way to find friends and partners online, but can provide you the convenience of internet relay chat and information delivering. Up to now, there are about 300 million people using real-time software all over the world. As more and more corporations have focused on this market with growing potential, which has hundreds of millions of uses, the competitions among these corporations are extremely fierce.The initial application of peer-to-peer network (peer-to-peer, referred to as P2P) is not the same as it is now. In fact, it can be regarded as a combination of different technologies and fashion trends. Below are the most important trends that have led the development of P2P technology: First of all, the integration of software engineering and new technologies led to a working dispersion trend. As a result, P2P computing was born. Then, in the past decade, it has turned fro m a single centralized system to distributed system due to the motivation of factors such as enterprise application integration. At last, with the development of the Internet, however, a comprehensive distributed computing has become an urgent need.Keywords:LAN chat P2P java目录摘要iAbstractii1绪论21.1JAVA的网络功能与编程21.1.1JAVA概述21.1.2 JAVA的特点41.1.3 JAVA语言在网络上的应用61.2J AVA B EANS技术61.3IP/TCP协议常识61.4S OCKET的简介71.5对等网络81.5.1 对等网络发展历史81.5.2 对等网络的概念81.5.3 对等网络的主要系统结构92 JAVAqq局域网聊天程序的需求分析112.1课题来源112.2需求分析113 JAVAqq局域网聊天程序的系统分析与设计123.1JAVA QQ局域网聊天程序的总体设计要点123.2JAVA QQ局域网聊天程序的设计步骤及功能模块划分133.3JAVA QQ局域网聊天程序各功能模块134 JAVAqq局域网聊天程序的设计与实现194.1开发环境工具194.2硬件环境194.3聊天系统功能模块的测试20结论20致谢21参考文献22附录 A 程序源代码231绪论随着互联网逐步普及,互联网技术的逐步提高。

JAVA网络聊天室课程设计

JAVA网络聊天室课程设计网络编程综合实训聊天室程序设计专业计算机科学与技术2022年1月学生姓名班学级号任课教师完成日期目录1课程设计的目的、要求............................................................. ...............................32系统需求分析............................................................. .. (4)2.1系统名称............................................................. .............................................42.2主体功能............................................................. ............................................42.3开发环境............................................................. ............................................43系统总体设计............................................................. .. (4)3.1系统的功能模块划分.....................................................................................43.2系统流程图............................................................. ........................................54系统详细设计............................................................. .. (6)4.1客户端模块设计............................................................. .. (6)4.1.1用户登录模块设计.............................................................. ..................64.1.2聊天室用户列表模块设计.............................................................. ......74.1.3聊天面板模块设计.............................................................. ..................84.1.4聊天输入面板模块设计.............................................................. ..........94.1.5悄悄话模块设计.............................................................. ......................94.1.6客户端的总体架构.............................................................. ................104.2服务器端模块设计.............................................................. .........................155运行结果.............................................................. . (20)5.1客户端............................................................. ..............................................205.2服务器端............................................................. ...........................................246个人小结............................................................. .. (24)1课程设计的目的、要求【目的】:综合运用本课程及计算机网络的相关知识设计并实现一个网络应用程序,以Java作为开发平台,通过实践进一步理解面向对象程序设计的思想和方法,利用Java语言进行程序设计的能力,提高对网络编程的综合应用能力。

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

课程设计 1 操作系统课程设计报告 课程设计

2 目录

一. 设计要求和目的………………………………………3 二. 背景知识…………………………………………………………4 三. 客户端设计………………………………………………………5 四. 客户端主要代码…………………………………………………6 五. 设计体会…………………………………………………………9 课程设计

3 摘要 随着网络信息时代的来临,Internet应用越来越广泛人们越来越习惯于在网上获取和交流信息。据调查显示,80%以上的人上网都会打开聊天工具来聊天,而几乎每一个年轻人都会去聊天。使用网上聊天已经成为现代年轻人一种新的交往方式。聊天室更适合于陌生人之间进行较为主观、感兴化的讨论。所以有大部分的人会进入聊天室聊天它会给人一个完全自由的聊天世界。因此我们联系所学的操作系统、数据库和MFC知识决定做一个简易的聊天系统。

一、设计要求和目的 此课题是实现一个即时通信系统完成 1:进程间通信、并发(同步/互斥)、文件读写 2:内存管理、Dll、Windows消息机制、IO。 课题任务分工:

客户端子系统: 在客户端系统的功能实现上,可以分为以下几个部分: [1]进程信息的输入 系统把用户进程要求发送的信息由键盘输入从文件读取。这部分功能是客户端子系统的基本部分,这个功能是以后各个部分的基础。系统要求做到即能够从其它子系 统中共享一部分信息 [2]进程信息的存储: 将进程的信息存储到客户端系统中,以及将发送的信息保存在文件中,以备以后进程之间通信确认以及查询。 [3]通信数据的传递及接收: 将客户所发送的信息由客户端由网络传到服务器端上,并且接受航服务器返回的接收方发送的信息,然后存储起来。 课程设计

4 用户

客户端服务器端

用户设置连接设置

用户发送信息通信内容

用户得到的信息处理用户

退出

服务器日志数据通信信息

连接

保存保存

处理监控

二.背景知识 SOCKET Socket可以看成在两个程序进行通讯连接中的一个端点,是连接应用程序和网络驱动程序的桥梁,Socket在应用程序中创建,通过绑定与网络驱动建立关系。此后,应用程序送给Socket的数据,由Socket交网络驱动程序向网络上发送出去。计算机从网络上收到与该Socket绑定IP地址和端口号相关的数据后,由网络驱动程序交给Socket,应用程序便可从该Socket中提取接收到得数据,网络应用程序就是这样通过Socket进行数据的发送与接收的 (1) 创建Socket; (2) 打开连接到Socket的输入/出流; (3) 按照一定的协议对Socket进行读/写操作; 课程设计 5 (4) 关闭Socket. IO技术 阻塞模式 可能造成阻塞的函数有:connect()、accept()、读写函数

C/S两端通过Socket机制进行连接 (1) 客户端的编程流程: a创建Socket对象,向Server的监听端口请求; b通过向新Socket中读写数据与Server端通信; c关闭Socket,结束与Server端; (2)服务器端的编程流程: 1打开Server Socket,创建一个服务器型套接字和一个普通套接字,服务器型套接字在指 定端口为客户端请求的Socket 服务; 2 等待来自客户端的Client端的请求; 3接收Client端的请求,用返回的Socket建立连接; 4通过向Socket中读写数据来与Client端通信; 5关闭Socket,结束与当前Client端的通信; 6关闭SerketSocket对象结束监听服务。

三.客户端设计 客户端主要完成建立连接、消息输入、消息发送、消息存储功能。 功能含义如下: 1.建立连接:建立一个ServerSocket连接,不断侦听是否有服务端连接或者断开连接。 2.消息输入:根据用户输入的消息,将消息显示在屏幕面板上。 3.消息发送:把用户输入的消息作为字符串通过Socket端口发送到服务器。 4.消息存储:把用户输入的消息存储到data.txt文件中,以便用户以后查阅聊天记录。 客户端设计如下: 1.界面设计 2.连接设计 3.接收信息设计 4.用户信息设计 5.帮助设计 客户端用户设计的IP地址和端口号连接到相应的服务器,通过接收用户输入的消息,然后通过所监听的端口把消息发送到服务端,由服务端把消息发送到指定的用户 课程设计 6 用户连接服务器 1客户端请求连接 客户端通过connect()请求连接,填写端口号以及IP地址,填写自己的信息。 2服务器端响应 服务器端的监听器监听到客户端的连接请求后,检测后允许客户端连接到服务器。 3给客户端返回信息 连接成功后服务器返回给客户端连接成功的信息,并且给所有的用户发送用户登录信息。 4关闭Socket连接 当以上的程序都正常运行后,需要关闭Socket连接,否则将会浪费服务器与客户端之间的资源。 5用户退出

5.1接收退出信息 当用户退出时,客户端将会用基于Socket的对象输出流发送给服务器退出对象。 5.2在线列表中删除用户 用户退出后应该把用户从在线列表中删除,否则用户退出用户还在在线列表中,那么该用户下次将会无法登录。 5.3更新在线列表 用户退出后将服务器端监控界面的用户列表更新。否则用户数据将会不同步。

四.客户端主要代码

/** * 事件处理 */ public void actionPerformed(ActionEvent e) { Object obj = e.getSource();

if (obj == userItem || obj == userButton) { //用户信息设置 //调出用户信息设置对话框 UserConf userConf = new UserConf(this,userName); userConf.setVisible(true); userName = userConf.userInputName; } else if (obj == connectItem || obj == connectButton) { //连接服务端设置 //调出连接设置对话框 课程设计 7 ConnectConf conConf = new ConnectConf(this,ip,port); conConf.setVisible(true); ip = conConf.userInputIp; port = conConf.userInputPort; } else if (obj == loginItem || obj == loginButton) { //登录 Connect(); } else if (obj == logoffItem || obj == logoffButton) { //注销 DisConnect(); showStatus.setText(""); } else if(obj == dataItem){ try{ File read=new File("data.txt"); Desktop.getDesktop().open(read); }catch (IOException e1){ e1.printStackTrace(); } } else if (obj == clientMessage || obj == clientMessageButton) { //发送消息 SendMessage(); clientMessage.setText(""); } else if (obj == exitButton || obj == exitItem) { //退出 int j=JOptionPane.showConfirmDialog( this,"真的要退出吗?","退出",

JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE); if (j == JOptionPane.YES_OPTION){ if(type == 1){ DisConnect(); } System.exit(0); } } else if (obj == helpItem) { //菜单栏中的帮助 //调出帮助对话框 Help helpDialog = new Help(this); helpDialog.setVisible(true); } } 课程设计 8 public void run(){ while(!socket.isClosed()){ try{ String type = (String)input.readObject();

if(type.equalsIgnoreCase("系统信息")){ String sysmsg = (String)input.readObject(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String ly_time = sdf.format(new Date()); textarea.append(ly_time); textarea.append("\n"); 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(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String ly_time = sdf.format(new Date()); textarea.append(ly_time); textarea.append("\n"); textarea.append(message); try{ record=new BufferedWriter(new FileWriter("data.txt",true)); record.write(ly_time); record.newLine(); record.write(message); record.newLine(); record.close(); }catch (IOException e){ e.printStackTrace(); } } else if(type.equalsIgnoreCase("用户列表")){

相关文档
最新文档