Java聊天室课程设计报告
Java聊天室程序设计报告
《Java之聊天室制作》总结报告姓名 __赵其国___________________学号 __2_____________班级 __嵌入式一班__ _____________二〇一二年十二月二十日一,设计目的为了更好的巩固输入输出流,窗体设计,多线程运用,网络通信设计方面的知识。
把所学的课程及相关知识加以融会贯通。
二,设计内容设计的聊天室能实现用户登录,显示登录用户列表,以及发送聊天信息和显示聊天信息的功能。
并可以选择接收信息的用户进行单发或群发的功能,运行程序,登录服务器后,可以从列表中选择单个或多个用户进行聊天,它是图形界面,线程,流和文件系统等技术的综合使用。
三,概要设计实现的功能:1,启动服务器端,接收客户端发来的信息,并在服务器端窗体显示客户端聊天信息,再吧信息返给在线用户,窗体背景色为粉色2,启动客户端窗体,窗体背景色为粉色3,用户名编辑框输入用户名,设置字体显红色,单击登录按钮,在显示在线用户列表内显示用户名,同时用户名编辑框不能编辑4,发送编辑框输入发送内容,单击发送按钮,启动输出流,把信息发送出去,同时把发出的信息追加到聊天内容文本域内,显示用户名,时间和发送内容。
5,单击退出按钮,运用File类和JfileChooser类实现聊天信息的保存6,聊天信息文本域,在线用户显示域和发送信息的文本域加了滚动条,其中聊天信息文本域,发送信息的文本域的文字能自动换行。
7,别的客户端发来信息是通过输入流读取信息,并截取发来信息的用户名及信息,用户名加到在线用户列表上显示在线,信息追加到聊天内容文本域内,显示用户名,时间和发送内容。
功能不足之处:1,保存聊天信息保存为text格式的有黑块。
保存为Doc格式的要转码不能直接打开2,用户在线显示,只能在用户发送信息时别的用户才能得到在线的用户名,然后再加到在线用户列表中,显示用户在线。
3,聊天室只适合群聊,没有实现技能群聊又能和单个人聊天的功能4,用户输出“退出”后在线用户列表中就会把用户删除,不过没有实现没找到错误出在哪里。
Java实验报告:聊天室的设计
综合实验聊天室的设计一、实验目的理解和掌握URL 通信的基本概念和组成,掌握URL 类的构造方法和成员方法,理解和掌握Socket 及UDP 编程。
二、实验原理利用网络通信的原理和Java中URL类进行编程。
三、主要仪器及耗材计算机与Windows 2000/XP系统;J2SDK、UltraEdit等软件。
四、实验内容与步骤内容:编写一个网上多用户聊天室程序。
要求:(1)服务器程序响应客户端程序不应该用很多时间。
(2)允许对与服务器连接的客户数有一定的限制。
(3)客户端程序提供客户聊天界面,用于输入信息和显示信息;接收通过服务器转发的其他客户聊天信息并显示。
步骤:1.在UltraEdit编辑环境下(推荐使用)或其它开发环境下开发Application和Applet程序;Applet程序:// ChatClient.javaimport java.awt.*;import java.awt.event.*;import .*;import java.io.*;import javax.swing.*;public class ChatClient extends JApplet implements Runnable {private JLabel clientLabel;private int clientID;private JTextField inputField;private JTextArea displayArea;private Socket connection;private DataInputStream input;private DataOutputStream output;// Set up user-interfacepublic void init(){Container container = getContentPane();JPanel panel1,panel2;panel1 = new JPanel();clientLabel=new JLabel("Client ");inputField =new JTextField(20); //inputField用于输入用户聊天信息inputField.addActionListener( new ActionListener() {public void actionPerformed(ActionEvent e) {try {output.writeUTF(inputField.getText()); //发送用户输入的聊天信息到server}catch ( IOException ioException ) {ioException.printStackTrace();}}});panel1.setLayout(new FlowLayout());panel1.add(clientLabel );panel1.add( inputField );container.add(panel1,BorderLayout.NORTH);panel2 = new JPanel();displayArea = new JTextArea( 10, 30 );displayArea.setEditable( false );panel2.add( new JScrollPane( displayArea ), BorderLayout.CENTER );container.add(panel2,BorderLayout.CENTER );} // end method init// Make connection to server and get associated streams.// Start separate thread to allow this applet to// continually update its output in textarea display.public void start(){// connect to server, get streams and start commThreadtry {// make connectionconnection = new Socket( getCodeBase().getHost(), 50000 );// get streamsinput = new DataInputStream( connection.getInputStream() );output = new DataOutputStream( connection.getOutputStream() );}// catch problems setting up connection and streamscatch ( IOException ioException ) {ioException.printStackTrace();}// create and start output threadThread commThread = new Thread( this );commThread.start();} // end method start// control thread that allows continuous update of displayAreapublic void run(){// get client identifiertry {clientID = input.readInt(); // 读server发送来的用户clientID// display clientID in event-dispatch threadSwingUtilities.invokeLater(new Runnable() {public void run(){clientLabel.setText( "客户" + clientID );}});while ( true ) { //循环聊天的各个用户发送来的信息,并显示String message=input.readUTF();displayMessage( message );}} // end trycatch( EOFException ioException ) {displayMessage( "Server terminated connection" );}// process problems communicating with servercatch ( IOException ioException ) {ioException.printStackTrace();}} // end method runprivate void displayMessage( final String messageToDisplay ){// display message from event-dispatch thread of executionSwingUtilities.invokeLater(new Runnable() { // inner class to ensure GUI updates properlypublic void run() // updates displayArea{displayArea.append( messageToDisplay +"\n");displayArea.setCaretPosition(displayArea.getText().length() );}} // end inner class); // end call to SwingUtilities.invokeLater}} // end classApplication程序import .*;import java.io.*;public class ChatServer{ private int clientNum=0; //当前连接的用户数private int maxClients=10;//允许连接的用户最大数private ServerSocket ss;private CommunicationThread communications[];public ChatServer(){try {ss = new ServerSocket( 50000, maxClients );}// process problems creating ServerSocketcatch( IOException ioException ) {ioException.printStackTrace();System.exit( 1 );}communications=new CommunicationThread [maxClients];for (int i=0;i<maxClients;i++) //循环等待用户连接{ try {//等待用户连接,连接成功时创建server端通信线程并启动它communications[i]=new CommunicationThread(ss.accept(),i);communications[i].start();clientNum++;}catch( IOException ioException ) {ioException.printStackTrace();System.exit( 1 );}}}private class CommunicationThread extends Thread {private Socket socket;private int clientID;private DataInputStream input;private DataOutputStream output;public CommunicationThread(Socket ss,int number) {socket=ss; //取连接SocketclientID=number; //取分配给用户的IDtry {//从Socket得到输入/输出流input = new DataInputStream( socket.getInputStream() );output = new DataOutputStream( socket.getOutputStream() );}catch( IOException ioException ) {ioException.printStackTrace();System.exit( 1 );}}public void run() {try {//String s=null;//s=s+clientId;output.writeInt(clientID); //给用户发送clientID }catch( IOException ioException ) {ioException.printStackTrace();System.exit( 1 );}while (true) { //循环读一用户clientID发送来的信息,发送给聊天的各个用户try {String message=input.readUTF(); //读用户clientID发送来的信息for (int i=0;i<clientNum;i++) { //发送给聊天的各个用户communications[i].output.writeUTF(" 客户"+clientID+":"+message);}//用户clientIDID发送的信息是"Bye",则用户ID结束聊天if (message.equals("Bye")) break;}catch( IOException ioException ) {ioException.printStackTrace();System.exit( 1 );}}try {output.close();input.close();socket.close();}catch( EOFException ioException ) {System.err.println( "Client terminated connection" );}catch( IOException ioException ) {ioException.printStackTrace();System.exit( 1 );}}}public static void main(String[] args){new ChatServer();}}2.在DOS环境下编译和运行Application和Applet程序;3.依据所做实验写实验报告。
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聊天室课程设计报告
UML课程设计题目网络聊天程序开发设计与实现学号:*************名:***指导教师:完成时间:2017年 12月目录1.摘要 (2)2.绪论 02.开发环境 03.需求分析 (1)3.1程序简介 (1)3.2程序功能 (1)4.系统设计 (2)4.1概要设计 (2)4.2详细设计 (2)5.测试 (7)6.结论 (9)参考文献 (10)摘要本次训练主要是考查了对JA V A程序设计的综合运用,设计一个Socket 通信的聊天程序,用户可以通过程序进行聊天通信,但不支持用户自定义表情及图片的发送。
本程序设计也用到了一些相关的标准Java的类,给程序设计带来了许多的方便,但用那些要切记加相应的类的包,还有一些构造方法和个别接口方法。
本程序可以实现用户之间的一些简单的交互,虽然功能较少,但是我想通过这次程序设计来熟悉并且学习更多关于JA V A编程的东西,来便于以后可以使用。
关键词:java聊天1.绪论对于一个选择网络编程的人来说,必须要有足够的细心和耐心,因为编程一般来说是很枯燥的乏味的,而且程序会越来越复杂,它所用到的符号、标记很多,所以不能出点小错误的。
还有,我们不能只是看程序,要学会把自己学的自己拿去实践,自己去编一些程序,培养自己的动手能力,掌握一些编程技巧,熟练运用自己学到的理论知识,这样在以后才能开发出属于自己的东西。
如今,随着科学技术的发展,计算机已成为了我们生活中必不可少的设备了,而掌握计算机知识和运用,又成了我们每一个人的目标了。
现在IT行业的飞速发展,无不应正了以前、现在、将来计算机行业都是科学发展的主导行业。
而这些基本上都建立在程序上的,所以程序员对计算机行业来说,可想而知有多么的重要了,他们所付出的每一滴汗水都将推动这个行业的发展。
现在我就用JA V A语言编写一个简单的程序——Java聊天程序。
将所学的基本知识用到其中去,这里包括了构造方法,创建图形界面,引用类等等。
(完整word版)Java聊天室系统程序设计实验报告
Java 聊天室系统程序设计实验报告院(系):信息与通信工程系专业:计算机应用技术班级:学号:姓名:指导老师:2013/6/8目录第一部分:系统设计总述 (2)1.设计目的: (2)2. ........................................................................................................................................................................ 设计总体要求: .. (2)3. ........................................................................................................................................................................ 实现目的: (2)第二部分:系统需求分析 (3)1.系统任务描述 (3)2.系统功能分析 (3)3.系统可行性分析 (3)第三部分:系统设计 (4)1.系统总体结构设计 (4)2.系统主体的处理流程 (5)3. ........................................................................................................................................................................ 系统流程逻辑 . (5)第四部分:代码分析 (6)1.服务器端部分代码 (6)2.客户端部分代码 (6)第五部分:系统的具体实现 (6)界面设计 (6)第六部分:小结 (10)第七部分:参考文献 (10)第一部分:系统设计总述1.设计目的:1.在开发技术和过程中,能够充分学习和使用JAVA的技术,进一步培养学生面向对象程序设计的思想,加深对面向对象程序设计特性的理解。
JAVA课程设计报告聊天室
JAVA课程设计报告聊天室一、课程目标知识目标:1. 学生能理解网络编程的基本概念,掌握JAVA Socket编程的基础知识。
2. 学生能运用面向对象编程思想,设计并实现聊天室客户端与服务器的数据传输功能。
3. 学生了解并掌握多线程技术在网络编程中的应用。
技能目标:1. 学生能运用所学知识,独立编写并调试简单的聊天室程序。
2. 学生具备分析问题、解决问题的能力,能针对聊天室程序进行优化和改进。
3. 学生能在团队协作中发挥自己的作用,与他人共同完成一个完整的网络编程项目。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣,增强学习JAVA的自信心。
2. 学生认识到团队合作的重要性,培养良好的团队协作精神。
3. 学生通过编程实践,体验创新与创造的乐趣,培养积极向上的学习态度。
本课程针对高年级学生,结合课本内容,注重理论与实践相结合,以提高学生的实际编程能力为主要目标。
课程要求学生在掌握基本知识的基础上,能够独立完成实际项目,培养其分析问题、解决问题的能力。
同时,课程强调团队协作,使学生学会与他人共同进步,共同成长。
通过本课程的学习,使学生达到知识、技能和情感态度价值观的全面提升。
二、教学内容1. 网络编程基础理论:介绍网络编程的基本概念,包括IP地址、端口号、协议等,使学生理解网络通信的基本原理。
- 教材章节:第三章 网络编程基础2. JAVA Socket编程:讲解Socket编程的原理,指导学生掌握客户端与服务器之间的数据传输方法。
- 教材章节:第四章 Socket编程3. 面向对象编程:运用面向对象编程思想,设计聊天室程序,包括类的定义、封装、继承与多态。
- 教材章节:第二章 面向对象编程基础4. 多线程技术:介绍多线程编程的概念,分析在聊天室程序中如何实现多用户并发通信。
- 教材章节:第五章 多线程编程5. 聊天室程序设计与实现:指导学生完成聊天室客户端与服务器的编写,实现基本的功能需求。
java大作业设计报告-JAVA聊天室
JAVA程序设计多人聊天室:?#1设计目的Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和静态的语言。
本次课程设计旨在应用JAVA编程语言中的网络通信,多线程,数据库编程,图形界面编程等技术实现一个基本的多人在线网络聊天室。
并以此巩固JAVA基础知识,体会面向对象的设计方法。
2》3平台要求3.1使用:搭载JAVA运行环境的平台即可。
3.2开发环境:Windows10 64bitJDKEclipse¥Window Builder4需求分析管理员:启动服务器,关闭服务器,强制用户退出,聊天房间增添改查。
用户:GUI,注册,登陆,聊天等。
用例图:SystemUserAdministratorServerClientDatabaseHouse delete or addUser logoutLogin and logoutChatEnter and leaveHouseUser Info get and setSign UpStart up server5 概要设计5.1 服务器设计?将客户端的请求抽象化,每种请求服务器都会产生一个特定的类的对象去处理它。
服务器负责接受客户端请求,根据请求内容完成指定工作。
为提高效率,采用多线程结合线程池设计技术,对于每个请求在线程池内得到一个线程去处理请求。
如图3-1所示。
5.2 客户端设计聊天室中一个事物的过程基本流程是:用户产生动作,客户端发送消息,服务器接收并处理,服务器返回处理结果,GUI 根据结果进行显示的更新。
客户端只在GUI 中采用多线程设计。
而对服务器回应的接受都是单线程的因为只有一个服务器为自己服务,且在接收数据过程中连接是不可断开的。
客户端的设计如图3-2所示。
一次事物流程中的步骤编号在图中给出。
&图 5-2客户端概要图6 详细设计6.1 服务器详细设计服务器要完成的任务是接受客户请求并在自己维护的数据结构上进行相应处理最终将处理结果返回给客户端。
java简易聊天室课程设计
java简易聊天室课程设计一、课程目标知识目标:1. 让学生掌握Java网络编程基础知识,理解TCP/IP协议和Socket通信原理;2. 学会使用Java语言构建简易聊天室程序,了解客户端与服务器之间的数据传输过程;3. 了解多线程编程在聊天室中的应用,掌握线程的创建、同步与通信方法。
技能目标:1. 培养学生运用所学知识解决实际问题的能力,具备独立设计并实现简易聊天室程序的能力;2. 提高学生的编程实践能力,学会使用调试工具分析问题、解决问题;3. 培养学生的团队协作能力,学会在项目开发中分工合作、共同进步。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,提高学习积极性;2. 培养学生勇于尝试、善于思考、面对问题主动解决的良好习惯;3. 增强学生的网络安全意识,学会在聊天过程中保护个人隐私。
分析课程性质、学生特点和教学要求,本课程旨在通过实际操作,让学生深入了解Java网络编程知识,掌握简易聊天室的设计与实现。
课程目标具体、可衡量,便于学生和教师在教学过程中明确预期成果,为后续教学设计和评估提供依据。
1. Java网络编程基础:讲解TCP/IP协议,Socket通信原理,以及常用类和方法;- 课本章节:第五章 网络编程,第1-2节;- 内容安排:网络通信基本概念,Socket编程,ServerSocket编程。
2. 简易聊天室设计与实现:- 课本章节:第五章 网络编程,第3-4节;- 内容安排:客户端与服务器程序设计,多线程实现,字符串处理,异常处理。
3. 聊天室功能拓展:- 课本章节:第五章 网络编程,第5节;- 内容安排:文件传输,用户列表管理,消息加密与解密。
4. 调试与优化:- 课本章节:第六章 异常处理与调试,第1-2节;- 内容安排:使用调试工具,分析问题,优化代码,提高程序稳定性。
5. 项目实践:- 课本章节:第五章 网络编程,第六章 异常处理与调试;- 内容安排:分组进行项目实践,完成简易聊天室程序设计与实现,进行功能拓展和优化。
JAVA实训报告--聊天室
《Java实训》设计报告电子信息工程学院专业:软件技术班级:1班实训:聊天室系统总体设计1、设计思路聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。
因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。
因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。
1.首先通过继承JFrame类构造服务器界面。
2.设计客户端程序使其能够完成正常的通信功能。
3.设计监听程序,使其显示登录的ip地址端口号,以及用户昵称,通过侦听按钮可以调用客户端程序,实现聊天功能。
2、各个模块详细的功能描述。
1、服务器端功能描述:启动服务器端。
2、客户端功能描述:启动客户端;显示登录昵称:显示聊天记录:发送信息;退出聊天室。
系统详细设计1、界面设计主要由类ChatRoom来实现,界面实际总体如下:输入昵称的文本框,输入IP地址的文本框以及输入端口的文本框;连接的按钮;退出按钮;接受消息的文本域;发送消息文本框;发送按钮。
项目设计在设计聊天室时,编写3个Java源文件:Client.java、Frame1.java、ServerThread.java;分别放在两个包中,一个是client,放Client.java、Frame1.java;一个是server,放ServerThread.java;聊天室除了上述Java源文件所给出的类外,还需要Java系统提供的一些重要类,如JButton,JTextField等。
下面是Java源文件的总体设计。
Client(主类)客户端Client类负责创建聊天室客户端的主窗口,该类含有main方法,计算器从该类开始执行。
聊天室java课程设计
聊天室java课程设计一、课程目标知识目标:1. 理解Java网络编程的基本原理,掌握聊天室程序设计的相关知识;2. 学会使用Java语言中的Socket编程,实现客户端与服务器之间的通信;3. 了解多线程编程在聊天室中的应用,掌握线程的创建和管理方法。
技能目标:1. 能够独立编写一个基于Java的聊天室程序,实现文字信息的发送与接收;2. 学会使用Java异常处理机制,提高程序的稳定性和可靠性;3. 培养良好的编程习惯,提高代码编写质量。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习积极性;2. 培养学生的团队协作精神,提高沟通能力;3. 增强学生的网络安全意识,遵守网络道德规范。
课程性质:本课程为实践性较强的课程,要求学生在理解理论知识的基础上,动手实践,完成一个具体的聊天室程序设计。
学生特点:学生处于高年级阶段,已经具备一定的Java编程基础,但网络编程和多线程编程方面可能较为陌生。
教学要求:结合学生特点和课程性质,本课程要求教师以引导为主,注重理论与实践相结合,鼓励学生积极参与讨论和动手实践,提高编程能力。
在教学过程中,关注学生的个体差异,提供针对性的指导和帮助,确保学生能够达到课程目标。
通过本课程的学习,使学生能够掌握聊天室程序设计的相关技能,为后续深入学习网络编程打下坚实基础。
二、教学内容1. Java网络编程基础- 网络编程基本概念- 网络协议与网络模型- InetAddress类和InetSocketAddress类2. Socket编程- Socket和ServerSocket类的作用- 客户端与服务器通信原理- 字节流和字符流的使用3. 多线程编程- 线程的概念与创建方式- 线程的生命周期与控制- 线程同步与线程通信4. 聊天室程序设计- 聊天室功能需求分析- 客户端与服务器端程序设计- 文字消息的发送与接收5. 异常处理与程序优化- Java异常处理机制- 常见异常类型与处理方法- 程序优化与调试技巧6. 网络安全与网络道德- 网络安全基本概念- 网络道德规范- 聊天室中的信息安全教学内容安排与进度:第一周:Java网络编程基础,掌握InetAddress类和InetSocketAddress类的使用;第二周:Socket编程,学习客户端与服务器通信原理,实现简单的回显程序;第三周:多线程编程,了解线程的概念,学会创建和管理线程;第四周:聊天室程序设计,分析需求,编写客户端与服务器端程序;第五周:异常处理与程序优化,学习异常处理机制,对聊天室程序进行优化;第六周:网络安全与网络道德,了解网络安全知识,提高网络道德意识。
JAVA课程设计实验报告-“聊天室”报告
第二章 聊天室的设计
2.1聊天室的粗略设计分析
聊天系统平台应有两个部分组成:服务端和客户端。服务端主要完成用户信息的存储、客户端命令的接受与响应以及发送系统消息、信息转发、踢人等服务端应有的功能。客户端主要完成聊天信息的发送与接受、登录、注销等功能。
此c/s系统使用的是TCP/IP协议,应用了如下通讯模式:
如果用户名和密码正确的话,则登录聊天室主界面;如果已经在线,则输出已经在线;否则输出用户名和密码错误,需要重新登录或者注册。
在线用户列表
用户登录之后,需要知道系统中,有哪些用户在线,这样可以方便用户选择与个别用户私聊和传送文件,也可以进行公聊。
用户公聊
用户输入的用户名和密码都正确后,则进入聊天室。聊天主界面主要由四大版块组成:公聊的聊天信息、在线用户列表、好友列表,系统消息和聊天的一些操作。
1.2聊天室的基本功能-------------------------------------------------------------3
1.3设计所用参考资料-------------------------------------------------------------6
第二章 聊天室的设计-------------------------------------------6
由于Client使用了流套接字,所以服务程序也要使用流套接字。这就要创建一个ServerSocket对象,接下来服务程序进入无限循环之中,无限循环从调用ServerSocket的accept()方法开始,在调用开始后accept()方法将导致调用线程阻塞直到连接建立。在建立连接后accept()返回一个最近创建的Socket对象,该Socket对象绑定了客户程序的IP地址或端口号。由于存在单个服务程序与多个客户程序通讯的可能,服务程序循环检测是否有客户连接到服务器上,如果有,则创建一个线程来服务这个客户,以此完成对客户端的监听。
java聊天室课程设计报告
课程设计报告2011 ~ 2012 学年第一学期学号 20104053020 姓名胡勇昌院系信息工程与技术专业计算机工程系课程名称 JAVA程序设计课程设计名称局域网内的多功能聊天室学时学分 1指导教师许烁娜2011年12 月25 日目录课程设计报告 (1)第1章引言 (3)1.1背景 (3)1.2相关技术 (3)1.2.1 JAVA概述 (3)1.2.2 Socket (3)1.2.3 TCP 三次握手 (4)1.3术语 (4)第2章需求分析与系统设计 (5)2.1需求分析 (5)2.2系统设计 (6)2.2.1多用户在线方案 (6)2.2.2 系统功能 (6)第3章系统实施 (6)3.1聊天室窗口 (6)3.2建立客户端窗口 (8)3.3内嵌“私聊”窗口 (9)3.4客服端类继承客户端窗口类,并内嵌私聊程序 (10)第4章测试 (15)4.1测试环境与使用方法 (15)4.2功能测试 (15)4.2.1聊天室窗口 (15)4.2.2 客户端窗口 (16)4.2.3 内嵌“私聊”窗口 (16)参考文献 (16)第1章引言1.1 背景网络聊天室通常直称聊天室,是一种人们可以在线交谈的网络论坛,在同一聊天室的人们通过广播消息进行实时交谈。
聊天室可以建立在即时通讯软件(如MSN Messenger、QQ)、P2P软件、万维网(如Halapo,Meebo ) 等基础上,万维网方式更为普通和种类繁多,交谈的手段不局限于文本,更包括语音、视频。
通常聊天室是按照房间或频道为单位的,在同一房间或频道的网人可以实时地广播和阅读公开消息。
一般情况下,与其它网络论坛、即时通讯不同的是,聊天室不保存聊天记录。
1.2 相关技术1.2.1 JA V A概述Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和java平台(即JavaSE, JavaEE, JavaME)的总称。
java聊天室实验报告
java聊天室实验报告Java聊天室实验报告一、引言近年来,随着互联网的快速发展,聊天室作为一种实时交流工具,受到越来越多人的关注和使用。
为了深入了解聊天室的原理和实现方式,本次实验选择了Java作为开发语言,设计了一个基于Java的聊天室应用程序。
二、实验目的1. 学习Java Socket编程的基本原理和技术;2. 理解聊天室的基本功能和实现方式;3. 掌握多线程编程的相关知识;4. 实践团队协作和项目管理的能力。
三、实验环境1. 操作系统:Windows 10;2. 开发工具:Eclipse IDE;3. 编程语言:Java;4. 版本控制工具:Git。
四、实验过程1. 项目规划与设计在开始编写代码之前,我们首先进行了项目规划和设计。
根据聊天室的功能需求,我们确定了客户端和服务器端的基本架构,并绘制了类图和时序图,明确了各个类之间的关系和通信方式。
2. 客户端实现客户端是用户与聊天室进行交互的界面,我们使用Java Swing库进行界面设计。
通过Socket连接服务器,客户端可以发送消息给服务器,并接收服务器转发的其他客户端的消息。
为了实现实时聊天,我们使用了多线程技术,一个线程负责接收消息,另一个线程负责发送消息。
3. 服务器端实现服务器端是聊天室的核心,负责接收客户端的连接请求,并转发消息给其他客户端。
我们使用Java Socket编程实现了服务器端的逻辑。
服务器端通过监听特定的端口,接收客户端的连接请求,并为每个客户端创建一个独立的线程处理其消息。
同时,服务器端维护了一个客户端列表,用于管理和转发消息。
4. 功能完善与测试在完成客户端和服务器端的基本功能后,我们进行了功能完善和测试。
我们增加了一些附加功能,如用户登录、用户列表显示等。
同时,我们进行了多线程并发测试、异常处理测试和界面兼容性测试,保证了程序的稳定性和可靠性。
五、实验结果与分析经过一段时间的努力,我们成功地实现了一个基于Java的聊天室应用程序。
Java课程设计聊天室(含代码)【范本模板】
Java程序课程设计任务书JAVA聊天室的系统的设计与开发1.主要内容:用JA V A实现基于C/S模式的聊天室系统。
聊天室分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能.2。
具体要求(包括技术要求等):系统的功能要求:A。
服务器端主要功能如下:1.在特定端口上进行侦听,等待客户端连接.2.用户可以配置服务器端的侦听端口,默认端口为8888.3。
向已经连接到服务器端的用户发送系统消息。
4。
统计在线人数。
5.当停止服务时,断开所有的用户连接.B。
客户端的主要功能如下:1。
连接到已经开启聊天服务的服务器端。
2。
用户可以配置要连接的服务器端的IP地址和端口号。
3。
用户可以配置连接后显示的用户名。
4。
当服务器端开启的话,用户可以随时登录和注销。
5。
用户可以向所有人或某一个人发送消息。
学习并掌握一下技术:Java JavaBean 等熟练使用一下开发工具:Eclipse,JCreator 等实现系统上诉的功能。
3.进度安排:12月28日~12月29日:课程设计选题,查找参考资料12月30日~ 1月1日:完成系统设计1月2日~1月5日:完成程序代码的编写1月6日:系统测试与完善1月7日:完成课程设计报告,准备答辩4.主要参考文献:[1]。
张广彬孟红蕊张永宝。
Java课程设计(案例精编)[M].清华大学出版社.2007年版摘要在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。
基于Java网络编程的强大功能,本次毕业设计使用Java编写一个聊天系统。
一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能用多线程可完成多点对多点的聊天,数据库管理系统用SQL Server2000完成并通过JDBC—ODBC桥访问数据库.本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则.系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。
java课程设计报告利用java实现简单聊天室
创建一个socket对象,用于连接服务器。
用socket创建流。
通过流和服务器进行交互。
交互完毕,将流和socket关闭。
(4)聊天室:
类名:Client
作用:实现发送即时信息。
继承的接口名:ActionListener
public class Server implements ActionListener{
定义的对象:
count//记录点机关闭按钮次数2次关闭
soconly//只有SOCKET,用于群发
sockets//所有客户的SOCKET
socket_thread//Socket所在的线乘,用于退出;
程序中引入的包:
package Chat;
import .*;
import java.awt.*;
import ;
import javax.swing.*;
import java.util.*;
import java.io.*;
(1)服务器端代码中用户自定义类:
类名:Server
作用:服务器启动
接受请求时候,通过accept()方法,得到一个socket对象。
Socket socket = server.accept();
通过socket创建流(输入,输出)。
BufferedReaderbr=newBufferedReader(newInputStreamReader
(socket.getInputStream()))
类名:LogIn
作用:用户注册登录
继承的接口名:ActionListener
public class LogIn implements ActionListener
Java简易聊天工具课程设计报告及代码
J a v a网络编程实践课程设计说明书课程名称:Java网络编程课程设计_题目:__基于C/S的班级聊天室(群聊)工具姓名:____HJC_____学号:201211012 201211006教学班号:软件工程1201班指导教师:xxx_______x x x x x x软件科学与工程系二○一三年十二月二十二日Java网络编程实践任务书目的:熟悉JA V A 语法,掌握图形化界面、多线程、网络、数据库等综合编程,掌握用编程语言开发由若干功能组成的小型项目的基本流程,增强动手实践能力,巩固和加强书本知识的学习,体会JA V A编程的特点。
题目1:基于C/S的班级即时通讯工具(2人)要求:1.C/S模式,基于Socket实现,服务器端用多线程来处理同时多个客户端连接。
2.数据存储:服务器端存储最少一个班级的信息;最好多个班级,主要存储班级若干学生的基本信息。
用数据库存储。
下面所有功能只考虑一个班是基本实现,考虑多个班是拓展实现。
3.界面:GUI界面,友好直观,布局合理,方便的功能入口。
4.功能:1)登陆输入用户名和密码;用户名是学号,有初始密码,例如111111;2)登陆验证根据服务器端存储的班级信息,对输入的用户进行验证,看是否存在于该班(只考虑一个班的情况)。
或是否是某个班的学生(多个班的情况)。
验证通过进入主界面,否则给出错误提示。
3)主界面列出该学生好友列表(同班级同学默认全是该生好友,如果是多个班则可以添加别班好友并经对方批准)。
4)即时聊天,选中某个好友,双击打开窗口聊天。
如果不在线则服务器等对方上线后转发(此功能属拓展实现)。
5)可以修改自己的登陆密码。
6)题目2:基于C/S的班级聊天室(群聊)工具(2人)要求:1.C/S模式,基于Socket实现,服务器端用多线程来处理同时多个客户端连接。
2.数据存储:服务器端存储一个班级的信息;主要存储班级若干学生的基本信息。
用数据库存储。
3.界面:GUI界面,友好直观,布局合理,方便的功能入口。
java聊天室 实验报告
java聊天室实验报告Java聊天室实验报告引言:聊天室是一种通过网络连接,允许用户在同一平台上进行实时交流的应用程序。
随着互联网的普及,聊天室成为人们日常生活中不可或缺的一部分。
本实验旨在通过使用Java编程语言,设计和实现一个简单的聊天室应用程序,并探讨其实现过程中所涉及的关键技术和挑战。
一、项目背景随着网络技术的飞速发展,人们对于实时交流的需求不断增加。
聊天室作为一种方便快捷的交流工具,受到了广大用户的欢迎。
本项目旨在利用Java编程语言,实现一个基于网络的聊天室应用程序,以满足用户的实时交流需求。
二、项目目标1. 设计和实现一个基于Java的聊天室应用程序。
2. 实现用户之间的实时消息传递功能。
3. 提供可靠的用户身份验证机制,确保聊天室的安全性。
4. 实现聊天记录的存储和查看功能,方便用户回顾历史消息。
三、技术实现1. 服务器端在服务器端,我们使用Java的Socket编程实现了与客户端的连接和通信。
通过建立一个服务器Socket,监听指定端口,可以接受来自客户端的连接请求。
一旦连接建立,服务器端就会创建一个新的线程来处理该客户端的请求,并实现实时消息的传递和处理。
2. 客户端在客户端,我们同样使用Java的Socket编程实现了与服务器端的连接和通信。
客户端通过建立一个Socket,指定服务器的IP地址和端口号,即可与服务器建立连接。
客户端通过输入消息并发送给服务器,同时接收来自服务器的消息并显示在界面上。
3. 用户身份验证为了确保聊天室的安全性,我们使用了用户身份验证机制。
在用户登录时,客户端将用户名和密码发送给服务器端。
服务器端通过验证用户信息的正确性,返回登录结果给客户端。
只有通过身份验证的用户才能进入聊天室并参与实时交流。
4. 聊天记录存储为了方便用户回顾历史消息,我们实现了聊天记录的存储和查看功能。
服务器端将接收到的消息保存在数据库中,并提供查看聊天记录的接口。
用户可以通过指定时间范围或关键词来查询历史消息,以便回顾和查找需要的信息。
《Java程序设计》课程设计报告-简易聊天室系统
华北科技学院课程设计说明书班级: 信息与计算科学B091学号:姓名:设计题目: 简易聊天室系统设计时间: 2011.12.26 至2011.12.30 指导教师:评语:________________________________ ________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:_____目录1 引言 (1)1.1课程设计选题 (1)1.2课程设计的目的 (1)1.3本选题的设计背景 (1)2.1 功能需求 (1)2.2 系统的开发运行环境 (2)2 总体设计 (2)3.1 系统体系结构设计 (2)3 详细设计与实现 (3)4.1 登录模块 (3)4.2 客户端注册界面模块 (5)4.3 客户端聊天模块 (8)4.4 服务器端模块 (10)4 小结和展望 (13)参考文献 (14)附录 (15)使用说明书 (15)源程序清单 (18)1引言1.1课程设计选题《简易聊天室系统》1.2课程设计的目的使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。
1.3本选题的设计背景聊天是是网络中广泛应用的服务之一,特别是现在信息社会对聊天的依赖也越累越大,我们品是在生活中很多人都在用的QQ就是一种很好的聊天工具,它不仅只是聊天那么简单,其它的功能也非常强大。
基于Java语言在网络编程中的广泛应用与我们基本每时每刻都在接触的聊天系统。
我选择尝试对一简单的聊天系统进行开发。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UML课程设计题目网络聊天程序开发设计与实现学号:*************名:***指导教师:完成时间:2017年 12月目录1.摘要 (2)2.绪论 02.开发环境 03.需求分析 (1)3.1程序简介 (1)3.2程序功能 (1)4.系统设计 (2)4.1概要设计 (2)4.2详细设计 (2)5.测试 (7)6.结论 (9)参考文献 (10)摘要本次训练主要是考查了对JA V A程序设计的综合运用,设计一个Socket 通信的聊天程序,用户可以通过程序进行聊天通信,但不支持用户自定义表情及图片的发送。
本程序设计也用到了一些相关的标准Java的类,给程序设计带来了许多的方便,但用那些要切记加相应的类的包,还有一些构造方法和个别接口方法。
本程序可以实现用户之间的一些简单的交互,虽然功能较少,但是我想通过这次程序设计来熟悉并且学习更多关于JA V A编程的东西,来便于以后可以使用。
关键词:java聊天1.绪论对于一个选择网络编程的人来说,必须要有足够的细心和耐心,因为编程一般来说是很枯燥的乏味的,而且程序会越来越复杂,它所用到的符号、标记很多,所以不能出点小错误的。
还有,我们不能只是看程序,要学会把自己学的自己拿去实践,自己去编一些程序,培养自己的动手能力,掌握一些编程技巧,熟练运用自己学到的理论知识,这样在以后才能开发出属于自己的东西。
如今,随着科学技术的发展,计算机已成为了我们生活中必不可少的设备了,而掌握计算机知识和运用,又成了我们每一个人的目标了。
现在IT行业的飞速发展,无不应正了以前、现在、将来计算机行业都是科学发展的主导行业。
而这些基本上都建立在程序上的,所以程序员对计算机行业来说,可想而知有多么的重要了,他们所付出的每一滴汗水都将推动这个行业的发展。
现在我就用JA V A语言编写一个简单的程序——Java聊天程序。
将所学的基本知识用到其中去,这里包括了构造方法,创建图形界面,引用类等等。
这不仅能锻炼我的实践能力,同时也进一步复习和巩固了我所学的理论知识。
对以前没有学好的还有督促和促进作用。
而且,根据需要,还可以了解一些课外的知识。
增加自己的知识面。
2.开发环境在开发此聊天程序时,该项目所使用的软件开发环境如下:操作系统:Windows 7开发工具:eclipse3.2及其VE插件Eclipse简介Eclipse 是一个开放源代码的、基于Java 的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse 附带了一个标准的插件集,包括Java 开发工具。
Eclipse是著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse 最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。
IBM提供了最初的Eclipse代码基础,包括Platform、JDT 和PDE。
目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、Rational Software、Red Hat及Sybase等。
Eclipse是一个开发源码项目,它其实是Visual Age for Java 的替代品,其界面跟先前的Visual Age for Java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。
近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse 将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。
3.需求分析3.1程序简介随着网络技术的发展,人们越来越多的依赖于网络,为了方便人们的生活,网络聊天自然成为了热点,各种工具到处都是。
此程序便是模仿其他聊天工具设计的,当然只是实现了比较少的功能,可以进行基本的聊天。
3.2 程序功能该程序功能:该程序分为2个部分,一个是客户端程序,一个是服务端程序,需要先开启服务器,再开启客户端才能使用,客户端程序提供了相互通信、清空聊天记录的等功能,服务端则用于接受客户端的请求,记录客户端的信息等。
4.系统设计4.1概要设计此聊天程序共有2个部分,客户端和服务器。
客户端中包含了1个Java文件,为主类client.java,;服务器端只有一个主类Server.java。
程序流程图:服务器程序结构客户端程序结构4.2详细设计(1)服务器程序实现本程序采用的是Socket通信来设计的,建立一个主类Server.java,其中主类中还包括服务器线程然后在其构造方法加载程序所需的组件,构造方法如下:public ClientThread(Socket socket) {try {this.socket = socket;reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));writer = new PrintWriter(socket.getOutputStream());// 接收客户端的基本用户信息String inf = reader.readLine();StringTokenizer st = new StringTokenizer(inf, "@");user = new User(st.nextToken(), st.nextToken());// 反馈连接成功信息writer.println(user.getName() + user.getIp() + "与服务器连接成功!");writer.flush();// 反馈当前在线用户信息if (clients.size() > 0) {String temp = "";for (int i = clients.size() - 1; i >= 0; i--) {temp += (clients.get(i).getUser().getName() + "/" + clients.get(i).getUser().getIp())+ "@";}writer.println("USERLIST@" + clients.size() + "@" + temp);writer.flush();}// 向所有在线用户发送该用户上线命令for (int i = clients.size() - 1; i >= 0; i--) {clients.get(i).getWriter().println("ADD@" + user.getName() + user.getIp());clients.get(i).getWriter().flush();}} catch (IOException e) {e.printStackTrace();}}@SuppressWarnings("deprecation")public void run() {// 不断接收客户端的消息,进行处理。
String message = null;while (true) {try {message = reader.readLine();// 接收客户端消息if (message.equals("CLOSE"))// 下线命令{contentArea.append(this.getUser().getName()+ this.getUser().getIp() + "下线!\r\n");// 断开连接释放资源reader.close();writer.close();socket.close();// 向所有在线用户发送该用户的下线命令for (int i = clients.size() - 1; i >= 0; i--) {clients.get(i).getWriter().println("DELETE@" + user.getName());clients.get(i).getWriter().flush();}listModel.removeElement(user.getName());// 更新在线列表// 删除此条客户端服务线程for (int i = clients.size() - 1; i >= 0; i--) {if (clients.get(i).getUser() == user) {ClientThread temp = clients.get(i);clients.remove(i);// 删除此用户的服务线程temp.stop();// 停止这条服务线程return;}}} else {dispatcherMessage(message);// 转发消息}} catch (IOException e) {e.printStackTrace();}}}其运行截图如下图所示:(2)、客户端主程序本程序使用了默认的卡片布局方式,对窗口的大小进行设置,让聊天窗口能够居中显示,以及登录主窗口类。
实现窗口布局功能和类的调用功能的主要代码如下:* 连接服务器** @param port* @param hostIp* @param name*/public boolean connectServer(int port, String hostIp, String name) {// 连接服务器try {socket = new Socket(hostIp, port);// 根据端口号和服务器ip建立连接writer = new PrintWriter(socket.getOutputStream());reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));// 发送客户端用户基本信息(用户名和ip地址)sendMessage(name + "@" + socket.getLocalAddress().toString());// 开启接收消息的线程messageThread = new MessageThread(reader, textArea);messageThread.start();isConnected = true;// 已经连接上了return true;} catch (Exception e) {textArea.append("与端口号为:" + port + " IP地址为:" + hostIp+ " 的服务器连接失败!" + "\r\n");isConnected = false;// 未连接上return false;}}(5)、聊天窗口程序设计程序提供了发送文字和关闭聊天的的简单功能。