JAVA实训评测报告--聊天室

合集下载

Java实验报告:聊天室的设计

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实训聊天系统报告总结一、项目背景随着互联网的快速发展,人们在日常生活和工作中越来越依赖于网络。

在线聊天成为了人们日常交流的重要方式。

为了满足不同用户对聊天系统的需求,本次实训项目选择开发一款功能完善的Java聊天系统。

二、项目目标1. 设计一款用户界面友好,操作简单的聊天系统。

2. 实现用户的注册和登录功能,保障系统的安全性。

3. 提供实时聊天功能,用户可以通过系统进行文字、图片的交流。

4. 支持多人群聊、私聊的功能。

5. 实现聊天记录的存储和查看。

三、系统架构1. 前端设计本次项目的前端开发使用Java的Swing库进行界面设计,保障用户操作的友好性和系统的易用性。

2. 后端开发后端使用Java语言进行开发,使用Socket实现实时通讯功能,使用MySQL进行用户数据的存储和管理。

四、功能实现1. 用户注册和登录功能用户可以通过系统注册新账号,并使用已有账号进行登录。

系统会对用户输入的信息进行验证,保障系统的安全性。

2. 实时聊天用户可以通过系统进行实时的文字、图片交流,确保用户之间的沟通顺畅和效率。

3. 多人群聊、私聊功能系统支持多人同时进行群聊,同时也支持用户进行私聊。

用户可以根据自己的需求选择不同的聊天方式。

4. 聊天记录存储和查看系统会将用户的聊天记录进行存储,并提供查看功能,用户可以随时查看自己的聊天记录。

3. 数据库设计设计数据库存储用户的基本信息、聊天记录等数据,确保数据的安全性和完整性。

4. 功能实现实现用户注册、登录、实时聊天、群聊、私聊等功能,并保障系统的稳定性和安全性。

六、总结本次实训项目成功设计并开发了一款功能完善的Java聊天系统,满足了用户对聊天系统的基本需求。

通过本次项目的实训,加深了我们对Java语言、数据库设计和网络通讯的理解和实践能力,为我们以后的开发工作积累了丰富的经验。

七、展望在今后的工作中,我们还可以进一步完善系统功能,例如增加语音、视频通话功能,优化系统的性能和用户体验,使系统更加满足用户的需求。

JAVA实训评测报告--聊天室

JAVA实训评测报告--聊天室

JAVA实训评测报告--聊天室部门: xxx时间: xxx制作人:xxx整理范文,仅供参考,可下载自行修改《Java实训》设计报告电子信息工程学院专业:软件技术班级:1班实训:聊天室系统总体设计1、设计思路聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。

因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:b5E2RGbCAP 在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。

因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。

p1EanqFDPw1.首先通过继承JFrame类构造服务器界面。

2.设计客户端程序使其能够完成正常的通信功能。

3.设计监听程序,使其显示登录的ip地址端口号,以及用户昵称,通过侦听按钮可以调用客户端程序,实现聊天功能。

DXDiTa9E3d2、各个模块详细的功能描述。

1、服务器端功能描述:启动服务器端。

2、客户端功能描述:启动客户端;显示登录昵称:显示聊天记录:发送信息;退出聊天室。

系统详细设计1、界面设计主要由类ChatRoom来实现,界面实际总体如下:输入昵称的文本框,输入IP地址的文本框以及输入端口的文本框;连接的按钮;退出按钮;接受消息的文本域;发送消息文本框;发送按钮。

RTCrpUDGiT工程设计在设计聊天室时,编写3个Java源文件:Client.java、Frame1.java、ServerThread.java;5PCzVD7HxA分别放在两个包中,一个是client,放Client.java、Frame1.java;一个是server,放ServerThread.java;聊天室除了上述Java源文件所给出的类外,还需要Java系统提供的一些重要类,如JButton,JTextField等。

聊天程序实训报告总结(3篇)

聊天程序实训报告总结(3篇)

第1篇一、实训背景随着互联网技术的飞速发展,聊天程序作为一种重要的网络应用,已经深入到人们的日常生活和工作中。

为了提高学生的实践能力,培养适应社会需求的技术人才,我们开展了本次聊天程序实训。

本次实训旨在通过实际编程,让学生掌握聊天程序的设计与实现,提高学生的编程能力和团队协作能力。

二、实训目标1. 理解聊天程序的基本原理和设计思路。

2. 掌握常用的编程语言和开发工具。

3. 能够独立设计和实现简单的聊天程序。

4. 培养良好的编程习惯和团队协作精神。

三、实训内容本次实训主要分为以下几个阶段:1. 需求分析在实训开始前,我们对聊天程序的需求进行了详细的分析。

主要包括以下功能:- 用户注册与登录- 文字消息发送与接收- 图片消息发送与接收- 多人聊天功能- 消息记录查看2. 系统设计根据需求分析,我们设计了以下系统架构:- 客户端:负责用户界面展示、消息发送与接收。

- 服务器端:负责用户管理、消息转发、数据存储等。

3. 技术选型在本次实训中,我们选择了以下技术:- 编程语言:Java- 开发工具:Eclipse- 数据库:MySQL- 消息传递:WebSocket4. 系统实现4.1 客户端实现客户端主要实现以下功能:- 用户注册与登录界面- 消息发送与接收界面- 图片消息发送与接收界面- 多人聊天界面4.2 服务器端实现服务器端主要实现以下功能:- 用户管理:包括用户注册、登录、信息修改等。

- 消息转发:负责将客户端发送的消息转发给对应的接收者。

- 数据存储:将用户信息和聊天记录存储在数据库中。

5. 系统测试在系统实现完成后,我们对聊天程序进行了详细的测试,包括功能测试、性能测试和安全性测试。

测试结果表明,聊天程序能够稳定运行,满足需求。

四、实训成果通过本次实训,我们取得了以下成果:1. 学生掌握了聊天程序的基本原理和设计思路。

2. 学生熟练掌握了Java编程语言和Eclipse开发工具。

3. 学生独立设计和实现了简单的聊天程序。

java 聊天室 实验报告

java 聊天室 实验报告

java 聊天室实验报告Java 聊天室实验报告摘要:本实验旨在利用Java编程语言创建一个简单的聊天室应用程序。

通过使用Socket和ServerSocket类,实现了客户端和服务器之间的实时通讯。

在实验过程中,我们学习了如何建立连接、发送和接收消息,并处理异常情况。

最终,我们成功地实现了一个基本的聊天室应用程序,并对其进行了测试和验证。

介绍:聊天室应用程序是一种常见的网络应用,它允许用户在网络上实时交流。

在本实验中,我们使用Java编程语言创建了一个简单的聊天室应用程序。

该程序包括一个服务器端和多个客户端,它们之间通过网络进行通讯。

实验步骤:1. 创建服务器端首先,我们创建了一个Server类作为服务器端。

在Server类中,我们使用ServerSocket类来监听指定端口,并在有新的客户端连接时创建一个新的线程来处理通讯。

在服务器端,我们实现了一个简单的消息广播功能,即当一个客户端发送消息时,服务器将该消息发送给所有连接的客户端。

2. 创建客户端接下来,我们创建了一个Client类作为客户端。

在Client类中,我们使用Socket类来连接服务器,并通过输入输出流来发送和接收消息。

客户端可以通过输入框输入消息,并在发送后将其显示在聊天窗口中。

同时,客户端也能够接收其他客户端发送的消息,并将其显示在聊天窗口中。

3. 测试和验证最后,我们对创建的聊天室应用程序进行了测试和验证。

我们启动了一个服务器端和多个客户端,并进行了实时通讯。

我们测试了消息的发送和接收功能,以及异常情况的处理。

通过测试,我们验证了聊天室应用程序的正常运行和稳定性。

结论:通过本实验,我们成功地使用Java编程语言创建了一个简单的聊天室应用程序。

通过Socket和ServerSocket类,我们实现了客户端和服务器之间的实时通讯,并测试和验证了其功能和稳定性。

在今后的学习和实践中,我们将进一步完善和扩展这个应用程序,以满足更多的需求和场景。

JAVA聊天室实验报告 网络编程技术实验报告

JAVA聊天室实验报告 网络编程技术实验报告

网络编程技术大作业
1.3 参考文档
版本:0.1.0 第 5页
序号 1 2 3
文档名 《Java 大学实用教程》 《TCP/IP 网络编程技术基础》 《Java 一对一网络编程》
012.6.14 2012.6.14
版本 第二版 第一版
4 系统设计说明...................................................................................................................................................... 8 4.1 模块整体结构图...................................................................................................................................... 8 4.2 使用说明书.............................................................................................................................................. 8
适用范围:聊天程序使用者,功能相似的程序开发人员,以及其他需要了解本系统工作 原理的人员。
1.2 术语/缩略语
序号 1 2 3
4
5 6 7 8 9 10 11 12 13
术语/缩略语 API Socket Frame Java Application 目标 IP 端口
Listener Client Sever Flag InputStream OutputStream Awt.event

java实训聊天系统报告总结

java实训聊天系统报告总结

java实训聊天系统报告总结一、引言随着互联网的发展,即时通讯成为了人们日常生活中必不可少的一部分。

而Java语言作为当前最流行的程序语言之一,其庞大的社区和强大的跨平台特性让其成为了开发即时通讯软件的理想选择。

针对这一需求,我们进行了Java实训项目,完成了一个基于Java 语言的聊天系统。

本文主要对该聊天系统进行总结和说明。

二、项目简介聊天系统是一款基于Java语言的即时通讯软件,它的实现原理是使用Java Socket编程实现客户端和服务器之间的通信。

用户可以通过该聊天系统与其他任何使用该系统的用户进行即时通信,并进行聊天记录保存、文件传输等功能。

三、系统框架该聊天系统采用B/S架构,客户端使用JavaFx实现,服务器端使用Java网络编程实现。

其框架如下所示:客户端:JavaFx + Java网络编程服务器端:Java网络编程四、模块介绍1. 用户模块:用户模块是整个聊天系统的核心模块,包含用户登陆、注册、消息接收等功能。

服务器端需要对用户进行身份验证,并将用户信息存储到数据库中。

而客户端需要通过Socket连接服务器,与其他用户进行通信。

2. 消息模块:消息模块包含聊天记录、消息发送、群聊、私聊等功能。

客户端需要记录聊天记录,并将消息发送到服务器,缓存在本地并展示在用户聊天界面上。

而服务器端需要接收消息,并进行下发给对应用户的操作。

3. 文件传输模块:文件传输模块可以让用户在聊天中传输文件,包含文件选择、上传下载等功能。

该模块是服务于消息模块的,服务器端需要对文件进行存储和传输管理,客户端需要实现文件的选择和上传下载功能。

五、项目结构1. 服务器端服务器端的主要目的是接收客户端的请求并进行处理,其结构如下所示:1、UserServer:用户身份验证。

2、MsgServer:聊天记录的发送和接收处理。

3、FileServer:文件传输功能的实现。

4、DBUtils:数据库操作工具类。

2. 客户端客户端需要实现用户登录、注册、聊天、文件传输等功能,其结构如下所示:1、LoginController:登录页面的相关操作,包含用户登录和注册。

java实训聊天系统报告总结

java实训聊天系统报告总结

java实训聊天系统报告总结在Java实训中,我们成功地设计和实现了一个聊天系统。

该系统具有以下功能:用户注册、登录、加好友、发送消息等。

在设计这个系统之前,我们进行了许多需求分析的工作,确定了系统的具体功能和要求。

然后,我们设计了系统的架构,包括前端界面和后端数据库的设计。

在开发过程中,我们采用了Spring Boot框架,使用了MySQL作为后端数据库。

由于我们的系统需要进行实时通信,因此我们还使用了基于WebSocket的技术。

在实际的开发过程中,我们首先完成了用户注册和登录的功能。

用户可以通过输入用户名和密码进行注册,并在登录页面输入正确的用户名和密码进行登录。

如果登录成功,系统将会跳转到聊天界面。

如果没有注册或者用户名密码输入错误,系统会给出相应的提示信息。

接下来,我们实现了添加好友的功能。

用户可以通过输入好友的用户名来添加好友。

当用户输入好友的用户名并点击添加按钮时,系统会检查数据库中是否存在该用户。

如果存在,则将该用户添加到当前用户的好友列表中;如果不存在,则给出相应的提示信息。

我们实现了发送消息的功能。

用户可以在输入框中输入消息,并点击发送按钮来发送消息。

在点击发送按钮后,用户的好友列表中的用户会收到消息。

用户可以选择查看已发送和已接受的消息。

在整个开发过程中,我们遇到了许多问题,并从中学到了许多经验。

我们学会了如何进行需求分析,如何将需求转化为具体的功能和要求。

我们学会了如何设计系统的架构,并根据架构来进行具体的开发工作。

我们学会了如何解决问题和调试程序,在遇到问题时能够快速找到解决方法。

通过这个实训项目,我们不仅学到了Java语言和Spring Boot框架的相关知识,还学会了团队合作和项目管理的技巧。

我们在与团队成员的合作中学会了沟通和协调的重要性,以及如何高效地分工合作。

在整个项目过程中,我们对实际的软件开发流程有了更深入的了解,提高了我们的编程能力和解决问题的能力。

java聊天室设计总结

java聊天室设计总结

java聊天室设计总结JAVA聊天室程序设计总结大二第一学期末我们进行了为期两周的java实习,这次的实习内容是设计一个多人聊天室。

在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ、MSN,网络聊天时一类的聊天系统的发展日新月异,因此老师布置了制作一个有简单聊天功能的网络聊天程序的课程;而且通过制作该程序还能更好的学习网络软件编程知识。

一、设计内容利用java语言实现聊天室程序。

聊天室分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的消息,客户端需登录到服务器端才可以实现正常的聊天功能。

设计的聊天室能实现用户登录,显示登录用户列表,以及发送聊天信息和显示聊天信息的功能。

并可以选择接收信息的用户进行单发或群发的功能,运行程序,登录服务器后,可以从列表中选择单个或多个用户进行聊天,它是图形界面,线程,流与文件系统等技术的综合应用。

二、实现功能1、启动服务器端,接收客户端发来的信息,并在服务器端窗体显示客户端聊天信息,再吧信息返给在线用户。

2、启动客户端,进入客户端页面,输入用户名,点击登录按钮,在显示在线用户列表内显示用户名。

3、发送编辑框输入发送内容,单击发送按钮,启动输出流,把信息发送出去,同时把发出的信息追加到聊天内容文本域内,显示用户名,时间和发送内容。

4、聊天信息文本域,在线用户显示域和发送信息的文本域加了滚动条,其中聊天信息文本域,发送信息的文本域的文字能自动换行。

5、别的客户端发来信息是通过输入流读取信息,并截取发来信息的用户名及信息,用户名加到在线用户列表上显示在线,信息追加到聊天内容文本域内,显示用户名,时间和发送内容。

三、设计收获这是大学以来第一次自主设计一个聊天程序,于我来说还是很有新鲜感但同时也有着稍许担心。

通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,但经过一次又一次的思考,一遍又一遍的检查和在老师、同学们的帮助下,慢慢的走上了成功之路,同时也暴露出了前期我在这方面的知识欠缺和经验不足。

聊天程序设计实验报告范文

聊天程序设计实验报告范文

聊天程序设计实验报告范文JAVA语言,聊天室实验报告某某专业名称实验室实验课程实验名称姓名学号同组人员实验日期某某某某大学软件工程2号实验楼201室JAVA高级程序设计聊天程序设计(客户端、服务端)无2022年12月12日JAVA语言,聊天室实验报告一、实验目的掌握基于TCP、UDP协议的聊天服务器端与客户端程序设计,掌握Socket,ServerSocket,DatagramSocket,DatagramPacket类的使用。

二、实验原理TCP和UDP协议的支持。

ServerSocket和Socket的使用。

三、实验内容实验截图JAVA语言,聊天室实验报告代码importjava.awt.Point;importjava.io.BufferedReader; importjava.io.IOE某ception; importjava.io.InputStreamReader; importjava.io.PrintWriter;import.ServerSocket;import.Socket;importjava.te某t.DateFormat; importjava.util.Date;importjava.util.HahMap;importjava.util.Vector;importjava.util.logging.Level; importjava.util.logging.Logger;/某某某某/publicclae某tendjava某.wing.JFrame{privateServerSocketerver;privateint=0;privatechar[]chatBuf=newchar[2048]; privateStringchatIpAddre="127.0.0.1"; privatefinalintchatPort=5200;privateHahMap<String,Vector<IMeage>>chatRecordMap;//privateHahMap<String,Integer>chatRecordHMap; publicTalkHome(){chatRecordMap=newHahMap<String,Vector<IMeage>>();//chatRecordHMap=newHahMap<String,Integer>();try{erver=newServerSocket(Integer.valueOf(chatPort));}catch(IOE某ceptione某){Logger.getLogger(TalkHome.cla.getName()).log(Level.SEVERE, null,e某);}newThread(newRunnable(){publicvoidrun(){while(true){try{Socketocket=erver.accept();JAVA语言,聊天室实验报告BufferedReaderin=newBufferedReader(newInputStreamReader(ocket.getInputStream()));inttmp_len=-1;StringBuilderchatStrBuilder=newStringBuilder();while((tmp_len=in.read(chatBuf))!=-1){chatStrBuilder.append(chatBuf,0,tmp_len);}addMeage(ocket.getInetAddre().getHotAddre(),chatStrBuilder.toString(),fale);in.cloe();ocket.cloe();}catch(IOE某ceptione某){Logger.getLogger(TalkHome.cla.getName()).log(Level.SEVERE,nu ll,e某);}}}).tart();}privatevoidreChatWindow(StringipAddre){Sytem.out.println(ipAddre);Vector<IMeage>chatRecord=chatRecordMap.get(ipAddre); jTe某tArea1.etTe某t("");if(chatRecord==null){chatRecord=newVector<IMeage>();chatRecordMap.put(ipAddre,chatRecord);}ele{for(IMeageiMe:chatRecord){if(iMe.imyelf){jTe某tArea1.append("我"+iMe.dateString+"}ele{jTe某tArea1.append("TA"+iMe.dateString+"}}}privatevoidaddMeage(finalStringipAddre,StringmeString,boolea nimyelf){Vector<IMeage>chatRecord=chatRecordMap.get(ipAddre);if(chatRecord==null){JAVA语言,聊天室实验报告chatRecord=newVector<IMeage>();chatRecordMap.put(ipAddre,chatRecord);}finalIMeageiMeage=newIMeage(meString,imyelf);chatRecord.add(iMeage);if(imyelf){newThread(newRunnable(){publicvoidrun(){try{SocketendMeage=newSocket(ipAddre,chatPort);PrintWriterendWindow=newPrintWriter(endMeage.getOutputStream());endWindow.print(iMeage.meString);endWindow.fluh();endWindow.cloe();endMeage.cloe();jTe某tArea1.append("我"+iMeage.dateString+"}catch(IOE某ceptione某){Logger.getLogger(TalkHome.cla.getName()).log(Level.SEVERE,nu ll,e某);}}}).tart();}ele{jTe某tArea1.append("TA"+iMeage.dateString+"}}jCheckBo某1=newjava某.wing.JCheckBo某();jScrollPane2=newjava某.wing.JScrollPane();jTe某tArea2=newjava某.wing.JTe某tArea();jButton2=newjava某.wing.JButton();jFormattedTe某tField1=newjava某.wing.JFormattedTe某tField();jFormattedTe某tField2=newjava某.wing.JFormattedTe某tField();jLabel1=newjava某.wing.JLabel();jLabel2=newjava某.wing.JLabel();JAVA语言,聊天室实验报告jPanel3=newjava某.wing.JPanel();jLabel3=newjava某.wing.JLabel();jScrollPane3=newjava某.wing.JScrollPane();jTe某tArea1=newjava某.wing.JTe某tArea();jCheckBo某1.etTe某t("jCheckBo某1");etDefaultCloeOperation(java某.wing.WindowContant.E某IT_ON_CLOSE);etBackground(newjava.awt.Color(255,255,255));etBound(newjava.awt.Rectangle(0,0,520,520));etCuror(newjava.awt.Curor(java.awt.Curor.DEFAULT_CURSOR));etModalE某cluionType(java.awt.Dialog.ModalE某cluionType.APPLICATION_E某CLUDE);jTe某tArea2.etColumn(20);jTe某tArea2.etFont(newjava.awt.Font("微软雅黑",0,14));//NOI18NjTe某tArea2.etLineWrap(true);jTe某tArea2.etRow(5);jScrollPane2.etViewportView(jTe某tArea2);jButton2.etTe某t("发送");jButton2.addActionLitener(newjava.awt.event.ActionLitener(){ publicvoidactionPerformed(java.awt.event.ActionEventevt){jButton 2ActionPerformed(evt);}});jFormattedTe某tField1.etTe某t("127.0.0.1");jFormattedTe某tField1.etToolTipTe某t("");jFormattedTe某tField2.etTe某t("5200");jFormattedTe某tField2.etToolTipTe某t("");jLabel1.etTe某t("IP:");jLabel2.etTe某t(":");jPanel3.etBackground(newjava.awt.Color(255,255,255));JAVA语言,聊天室实验报告}});jLabel3.etTe某t("对方IP:");jLabel3.etToolTipTe某t("");java某.wing.GroupLayoutjPanel3Layout=newjava某.wing.GroupLayout(jPanel3);jPanel3.etLayout(jPanel3Layout);jPanel3Layout.etHorizontalGroup(jPanel3Layout.createParallelGroup(java某.wing.GroupLayout.Alignment.LEADING).addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap().addPreferredGap(ponentPlacement.UNRELATED)java某.wing.GroupLayout.PREFERRED_SIZE,131,java某.wing.GroupLayout.PREFERRED_SIZE).addContainerGap(java某.wing.GroupLayout.DEFAULT_SIZE,Short.MA某_VALUE)) );jPanel3Layout.etVerticalGroup(jPanel3Layout.createParallelGroup(java某.wing.GroupLayout.Alignment.LEADING).addGroup(jPanel3Layout.createSequentialGroup() .addGap(22,22,22).addGroup(jPanel3Layout.createParallelGroup(java 某.wing.GroupLayout.Alignment.BASELINE)java某.wing.GroupLayout.PREFERRED_SIZE,java某.wing.GroupLayout.DEFAULT_SIZE,java某.wing.GroupLayout.PREFERRED_SIZE).addContainerGap(java某.wing.GroupLayout.DEFAULT_SIZE,Short.MA某_VALUE)) );jTe某tArea1.etEditable(fale);jTe某tArea1.etColumn(20);JAVA语言,聊天室实验报告jTe某tArea1.etFont(newjava.awt.Font("微软雅黑",0,14));//NOI18NjTe某tArea1.etLineWrap(true);jTe某tArea1.etRow(5);jScrollPane3.etViewportView(jTe某tArea1);java某.wing.GroupLayoutlayout=newjava某.wing.GroupLayout(getContentPane());getContentPane().etLayout(layout);layout.etHorizontalGroup(layout.createParallelGroup(java某.wing.GroupLayout.Alignment.LEADING).addGroup(java某.wing.GroupLayout.Alignment.TRAILING,layout.createSequentialGroup().addGroup(layout.createParallelGroup(java某.wing.GroupLayout.Alignment.LEADING).addGroup(java某.wing.GroupLayout.Alignment.TRAILING,layout.createSequentialGr oup().addGap(2,2,2).addPreferredGap(ponentPlacement.RELATED)java某.wing.GroupLayout.PREFERRED_SIZE,104,java某.wing.GroupLayout.PREFERRED_SIZE).addPreferredGap(ponentPlacement.RELATED)java某.wing.GroupLayout.PREFERRED_SIZE,6,java某.wing.GroupLayout.PREFERRED_SIZE).addPreferredGap(ponentPlacement.RELATED)java某.wing.GroupLayout.PREFERRED_SIZE,43,java某.wing.GroupLayout.PREFERRED_SIZE).addPreferredGap(ponentPlacement.RELATED,123,Short.MA某_VALUE).addPreferredGap(ponentPlacement.RELATED)java某.wing.GroupLayout.PREFERRED_SIZE)JAVA语言,聊天室实验报告.addContainerGap()));layout.etVerticalGroup(layout.createParallelGroup(java某.wing.GroupLayout.Alignment.LEADING).addGroup(layout.createSeq uentialGroup().addGroup(layout.createParallelGroup(java某.wing.GroupLayout.Alignment.LEADING,fale)java某.wing.GroupLayout.DEFAULT_SIZE,java某.wing.GroupLayout.DEFAULT_SIZE,Short.MA某_VALUE)java某.wing.GroupLayout.DEFAULT_SIZE,358,Short.MA某_VALUE)) .addPreferredGap(ponentPlacement.RELATED)java某.wing.GroupLayout.DEFAULT_SIZE,131,Short.MA某_VALUE) .addPreferredGap(ponentPlacement.RELATED).addGroup(layout.createParallelGroup(java某.wing.GroupLayout.Alignment.BASELINE)java某.wing.GroupLayout.PREFERRED_SIZE,java某.wing.GroupLayout.DEFAULT_SIZE,java某.wing.GroupLayout.PREFERRED_SIZE)java某.wing.GroupLayout.PREFERRED_SIZE,java某.wing.GroupLayout.DEFAULT_SIZE,java某.wing.GroupLayout.PREFERRED_SIZE).addGap(2,2,2)));pack();}//</editor-fold>addMeage(chatIpAddre,jTe某tArea2.getTe某t(),true);jTe某tArea2.etTe某t("");}if(evt.getStateChange()==1){JAVA语言,聊天室实验报告chatIpAddre=evt.getItem().toString();reChatWindow(chatIpAddre);}}privatePoint;/某某某/publictaticvoidmain(Stringarg[]){try{for(java某.wing.UIManager.LookAndFeelInfoinfo:java某.wing.UIManager.getIntalledLookAndFeel()){if("Nimbu".equal(info.getName())){java某.wing.UIManager.etLookAndFeel(info.getClaName());break;}}}catch(ClaNotFoundE某ceptione某){java.util.logging.Logger.getLogger(TalkHome.cla.getName()).l og(java.util.logging.Level.SEVERE,null,e某);}catch(IntantiationE某ceptione某){java.util.logging.Logger.getLogger(TalkHome.cla.getName()).l og(java.util.logging.Level.SEVERE,null,e某);}catch(IllegalAcceE某ceptione某){java.util.logging.Logger.getLogger(TalkHome.cla.getName()).l og(java.util.logging.Level.SEVERE,null,e某);}catch(java某.wing.UnupportedLookAndFeelE某ceptione某){java.util.logging.Logger.getLogger(TalkHome.cla.getName()).l og(java.util.logging.Level.SEVERE,null,e某);}//</editor-fold>/某Createanddiplaytheform某/java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newTalkHome().etViible(true);}});JAVA语言,聊天室实验报告}//Variabledeclaration-donotmodifyprivatejava某.wing.JButtonjButton2;privatejava某.wing.JCheckBo某jCheckBo某1;privatejava某.wing.JFormattedTe某tFieldjFormattedTe某tField1;privatejava某.wing.JFormattedTe某tFieldjFormattedTe某tField2;privatejava某.wing.JLabeljLabel1;privatejava某.wing.JLabeljLabel2;privatejava某.wing.JLabeljLabel3;privatejava某.wing.JPaneljPanel3;privatejava某.wing.JScrollPanejScrollPane2;privatejava某.wing.JScrollPanejScrollPane3;privatejava某.wing.JTe某tAreajTe某tArea1;privatejava某.wing.JTe某tAreajTe某tArea2;}claIMeage{publicbooleanimyelf;publicStringmeString;publicIMeage(Stringme,booleanimyelf){thi.imyelf=imyelf;thi.meString=me;}四、实验心得其实java已经将TCP和UDP协议高度封装了,熟练使用ServerSocket和Socket,DataGram会写出想要的网络程序,并不是很难。

聊天室系统实训总结

聊天室系统实训总结

聊天室系统实训总结聊天室系统实训总结,沟通是很重要的,下面是带来的聊天室系统实训总结,欢迎阅读!聊天室系统实训总结在编写JAVA聊天室的过程中,让我学到了很多东西,有知识方面的,而更多的是经验。

从以前学习C,到现学习JAVA,有很多的地方不习惯。

主要的就是思想不会转变。

但是还是有很多相似的地方,比如,如何实现心中所想的东西时,很多函数的编写的方法是类似的,而不同的是JAVA多了继承、多态、封装等等面向对象的东西。

所以在整体构思方面差异比较大,但是细节方面还是类似的。

编写聊天室让我对面向对象的了解算是更进一步了。

首先:聊天室实现的就是聊天;用户与用户之间实现聊天的功能。

然后:对于聊天这个功能如何实现呢?1、要实现用户与用户之间的交流,必须要有一个通信实体做出“主动姿态”,主动接受来自其他通信实体的连接请求。

这就是服务端。

2、客户端——用于连接到服务端,然后实现用户之间的通信。

所以这里的服务器和客户端便是两个对象,它们能实现用户之间的通信。

对于总体的构思擦不多就是这样。

所以现在需要的便是一步一步的细化下去。

一、服务端a) 服务端如何实现主动接受其他通信实体的连接请求?b) 如何实现客户端之间信息的收发?c) 服务端应该有些什么样的功能呢?二、客户端a) 如何连接到服务端?b) 客户端应该有些什么样的功能?当慢慢的思考下去,思想便会慢慢的清楚。

再开始编写的时候,其实头是乱的,摸不着头绪,因为那时候开始的时候便在想:如何写连接?如何写收发信息?如何写连接?等等。

也许这就是学C的时候的习惯思想,那时候写过的最大的程序便是俄罗斯方块,其余的便是在搞算法。

不过当自己慢慢的习惯JAVA的编程思想之后,便是好多了。

对于服务端和客户端的设计1、服务器端的主要功能:a) 在特定的端口上进行监听,等待客户端连接。

b) 默认端口为30000 。

c) 向已经连接到服务的用户发送系统消息。

d) 统计在线人数。

e) 当停止服务器时,断开所有的用户连接。

JAVA聊天室实训报告

JAVA聊天室实训报告

服务器端开放端口, 等待客户端连接
接收客户端请求。
监听客户端的通信
互相通信 客户端 A 发送信息 客户端 B 发送信息
客户下线
结束
3.重点设计及编码
//聊天室服务器 import .*; import java.io.*;
import java.util.*; import java.awt.event.*; import java.awt.*; import javax.swing.*; class Server extends JFrame { private TextArea msgA = new TextArea();//服务器用来输入的文本域 private TextArea area = new TextArea();//服务器显示消息的文本域 private TextField portT = new TextField("8888"); private java.awt.List list = new java.awt.List();//在线客户列表 private ServerSocket server;//服务器 private Socket client;//客户端 private Map<String, Socket> container = new HashMap<String, Socket>();//HashMap void 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(); Panel p8 = new Panel(); Panel p9 = new Panel(); Panel p10 = new Panel(); //设置两个主要的文本框 Label lb1 = new Label("服务器界面"); lb1.setBackground(new Color(250,120,150)); Label lb2 = new Label("port"); BorderLayout border1 = new BorderLayout(); p1.setLayout(border1); p1.add(BorderLayout.CENTER, area); BorderLayout border2 = new BorderLayout(); p5.setLayout(border2); p5.add(BorderLayout.NORTH, p3); p5.add(BorderLayout.CENTER, msgA); BorderLayout border3 = new BorderLayout(); p7.setLayout(border3); p7.add(BorderLayout.CENTER, p1); p7.add(BorderLayout.SOUTH, p5); p7.setBackground(new Color(250,150,200)); JButton startButton = new JButton("启动服务"); JButton sendButton = new JButton("发送"); JButton flushButton = new JButton("刷新列表"); FlowLayout fl = new FlowLayout(FlowLayout.LEFT);

JAVA课程设计实验报告-“聊天室”报告

JAVA课程设计实验报告-“聊天室”报告
网上查阅资料
第二章 聊天室的设计
2.1聊天室的粗略设计分析
聊天系统平台应有两个部分组成:服务端和客户端。服务端主要完成用户信息的存储、客户端命令的接受与响应以及发送系统消息、信息转发、踢人等服务端应有的功能。客户端主要完成聊天信息的发送与接受、登录、注销等功能。
此c/s系统使用的是TCP/IP协议,应用了如下通讯模式:
如果用户名和密码正确的话,则登录聊天室主界面;如果已经在线,则输出已经在线;否则输出用户名和密码错误,需要重新登录或者注册。
在线用户列表
用户登录之后,需要知道系统中,有哪些用户在线,这样可以方便用户选择与个别用户私聊和传送文件,也可以进行公聊。
用户公聊
用户输入的用户名和密码都正确后,则进入聊天室。聊天主界面主要由四大版块组成:公聊的聊天信息、在线用户列表、好友列表,系统消息和聊天的一些操作。
1.2聊天室的基本功能-------------------------------------------------------------3
1.3设计所用参考资料-------------------------------------------------------------6
第二章 聊天室的设计-------------------------------------------6
由于Client使用了流套接字,所以服务程序也要使用流套接字。这就要创建一个ServerSocket对象,接下来服务程序进入无限循环之中,无限循环从调用ServerSocket的accept()方法开始,在调用开始后accept()方法将导致调用线程阻塞直到连接建立。在建立连接后accept()返回一个最近创建的Socket对象,该Socket对象绑定了客户程序的IP地址或端口号。由于存在单个服务程序与多个客户程序通讯的可能,服务程序循环检测是否有客户连接到服务器上,如果有,则创建一个线程来服务这个客户,以此完成对客户端的监听。

java聊天室实验报告

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实训聊天系统报告总结3篇

java实训聊天系统报告总结3篇

java实训聊天系统报告总结3篇Report summary of java training chat system汇报人:JinTai Collegejava实训聊天系统报告总结3篇前言:报告是按照上级部署或工作计划,每完成一项任务,一般都要向上级写报告,反映工作中的基本情况、工作中取得的经验教训、存在的问题以及今后工作设想等,以取得上级领导部门的指导。

本文档根据申请报告内容要求展开说明,具有实践指导意义,便于学习和使用,本文档下载后内容可按需编辑修改及打印。

本文简要目录如下:【下载该文档后使用Word打开,按住键盘Ctrl键且鼠标单击目录内容即可跳转到对应篇章】1、篇章1:java实训聊天系统报告总结2、篇章2:java实训聊天系统报告总结3、篇章3:java实训聊天系统报告总结篇章1:java实训聊天系统报告总结经过三个星期的学习,我们终于把这个图书馆管理系统做出来了,虽然做得不是很完美,但是却是我们这个小组的每一个成员辛苦了三个星期的成果,我们为此感到开心。

说实话,我们这一组的JAVA都学得不是很好,上课也听得不是很明白,所以在刚开始做的时候,我们每一个人都认为这是一个不可能完成的任务,刚开始我们也想过要放弃,想想这么难怎么可能完成呢!可是后来看到其他组都在认真的做任务,我们想想也不能这样放弃,至少也得试试,如果不会的话,再去请教会的人,学习不就是从不会到会的!于是第一个星期我们把任务分配好了,但是这一周我们把大部分的时间浪费了,也没有做出来什么,只是把一个简单的界面做好了。

不过我们也很开心了,因为至少是我们自己做出来的,虽然没有太完善。

第二个星期我们开始做每一个版块的功能模块,一共要完成三个版块,我们六个人分成两组我们这组要完成最近一个系统维护版块,这个版块包括两大模块,更改密码和用户管理,而我个人主要负责的是用户管理这个版块。

在实训的过程中我们还学到了JAVA的图形化界面。

这让我们很轻松的就能把一个界面弄出来,而不需要让我们打很我繁琐的程序代码,当然我的这个模块的界面我花了半天就做出来了,做出来之后,接下来就是接监听,这对我来说是一个难点,起初我是一点也不会的,自己看书也只是看得懂,但也编不出来,当时我很着急,看到人家都做出来了。

java聊天室 实验报告

java聊天室 实验报告

java聊天室实验报告Java聊天室实验报告引言:聊天室是一种通过网络连接,允许用户在同一平台上进行实时交流的应用程序。

随着互联网的普及,聊天室成为人们日常生活中不可或缺的一部分。

本实验旨在通过使用Java编程语言,设计和实现一个简单的聊天室应用程序,并探讨其实现过程中所涉及的关键技术和挑战。

一、项目背景随着网络技术的飞速发展,人们对于实时交流的需求不断增加。

聊天室作为一种方便快捷的交流工具,受到了广大用户的欢迎。

本项目旨在利用Java编程语言,实现一个基于网络的聊天室应用程序,以满足用户的实时交流需求。

二、项目目标1. 设计和实现一个基于Java的聊天室应用程序。

2. 实现用户之间的实时消息传递功能。

3. 提供可靠的用户身份验证机制,确保聊天室的安全性。

4. 实现聊天记录的存储和查看功能,方便用户回顾历史消息。

三、技术实现1. 服务器端在服务器端,我们使用Java的Socket编程实现了与客户端的连接和通信。

通过建立一个服务器Socket,监听指定端口,可以接受来自客户端的连接请求。

一旦连接建立,服务器端就会创建一个新的线程来处理该客户端的请求,并实现实时消息的传递和处理。

2. 客户端在客户端,我们同样使用Java的Socket编程实现了与服务器端的连接和通信。

客户端通过建立一个Socket,指定服务器的IP地址和端口号,即可与服务器建立连接。

客户端通过输入消息并发送给服务器,同时接收来自服务器的消息并显示在界面上。

3. 用户身份验证为了确保聊天室的安全性,我们使用了用户身份验证机制。

在用户登录时,客户端将用户名和密码发送给服务器端。

服务器端通过验证用户信息的正确性,返回登录结果给客户端。

只有通过身份验证的用户才能进入聊天室并参与实时交流。

4. 聊天记录存储为了方便用户回顾历史消息,我们实现了聊天记录的存储和查看功能。

服务器端将接收到的消息保存在数据库中,并提供查看聊天记录的接口。

用户可以通过指定时间范围或关键词来查询历史消息,以便回顾和查找需要的信息。

Java聊天系统实训报告

Java聊天系统实训报告

Java聊天系统实训报告一、实训目的:1、理解C/S模式的软件系统结构,掌握网络编程的基本概念;2、了解Java 的多线程机制,掌握Java多线程技术的应用;3、熟练掌握基于TCP协议的Socket编程;4、熟练掌握基于UDP协议的Socket编程;5、了解Socket编程的协议约定以及信息交互方法;二、实训要求:使用JBuilder提供的组件及网络包,开发一个实用的C/S模式聊天室系统。

(1)功能要求要求该系统由客户端及服务器端两部分组成。

(2)系统界面要求:要求系统具有友好的用户界面,界面简洁、操作方便;本程序客户端主要完成了:1. 客户端发送信息可以广播客户。

2. 广播客户,则将信息转发到所有客户端。

服务器主要完成了:客户-服务器之间信息的交互。

例如hello发送信息到服务器,服务器将信息转发到所有与之连接的客户(hello、boy),通过这种形式,就可以实现客户之间的信息广播。

本程序可以实现发送信息广播,只要进入客户端都可以看到消息,本程序采用了流的概念,java多线程,Socket应用程序中用到的代码如下客户端代码:import java.awt.*;import java.awt.event.*;import java.io.*;import .*;public class Login implements ActionListener{private static final ActionListener WindowAdapter = null;private Frame f;private TextField tf;private Label l;private String tfContent="";public Login(){f = new Frame("欢迎登陆本程序...按enter键直接登录");l = new Label("请输入你的名字");tf = new TextField(20);f.setLayout(new FlowLayout());f.add(l);f.add(tf);f.pack();f.show();tf.addActionListener(this);f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}public void actionPerformed(ActionEvent e){System.out.println ("ft clicked");tfContent = tf.getText();ClientFrame cf = new ClientFrame(tfContent);f.dispose();}public static void main(String[] args){new Login();}}class ClientFrame extends Thread implements ActionListener{private Frame f;private TextField tf;private Button btn;TextArea ta;private Panel pup;String data;BufferedReader InputS;PrintStream OutputS;String name;ClientFrame(String str){name = str;Socket client;try {client = new Socket("localhost",6000);InputS = new BufferedReader(new InputStreamReader(client.getInputStream()));OutputS = new PrintStream(client.getOutputStream(),true);}catch (Exception ex) {ex.printStackTrace();}OutputS.println("欢迎" + name + "光临");f = new Frame("客户端");tf = new TextField(30);tf.addActionListener(this);btn = new Button("发送");ta = new TextArea();pup = new Panel();f.setLayout(new BorderLayout());f.add(pup,BorderLayout.NORTH);pup.add(tf);pup.add(btn);f.add(ta);f.pack();f.setSize(400,300);f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){OutputS.println(name + "已经离开");System.exit(0);}});btn.addActionListener(this);f. show();this.start();}public void run(){try {while(true){System.out.println ("正在监听端口...");OutputS.println("\u0001");ta.setText(InputS.readLine().replaceAll("\u0001","\n"));Thread.sleep(1000);}}catch (Exception ex) {ex.printStackTrace();}}public void actionPerformed(ActionEvent e){String cmd = e.getActionCommand();if (cmd.equals("发送")){System.out.println ("发送clicked");data = tf.getText();try {OutputS.println(name + "说:" + data);ta.setText(InputS.readLine().replaceAll("\u0001","\n"));}catch (Exception ex) {ex.printStackTrace();}tf.setText("");}else{System.out.println ("发送clicked");data = tf.getText();try {OutputS.println(name + "说:" + data);ta.setText(InputS.readLine().replaceAll("\u0001","\n"));}catch (Exception ex) {ex.printStackTrace();}tf.setText("");}}}运行结果如下图:服务器代码如下:import java.io.*;import java.awt.*;import java.awt.event.*;import .*;import java.util.ArrayList;public class ServerFrame implements ActionListener{private Frame f;private TextArea ta;private MenuBar mb;private MenuItem start;private Menu m;boolean isStop;static ArrayList clients;ServerFrame() {f = new Frame("java聊天系统服务器");ta = new TextArea();mb = new MenuBar();m = new Menu("服务器管理");start = new MenuItem("启动服务器");mb.add(m);m.add(start);start.addActionListener(this);f.setMenuBar(mb);f.add(ta);f.setSize(260, 60);f.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});f.show();}public void actionPerformed(ActionEvent e)//该方法用来对发生在按钮上的事件进行处理{String cmd = e.getActionCommand();if (cmd.equals("启动服务器")) {System.out.println("初始化中...");try {System.out.println("服务器已经启动");ServerSocket server = new ServerSocket(6000);while(!isStop){Socket Client = server.accept();Service ss = new Service(Client);}}catch (Exception ex) {ex.printStackTrace();}}}public static void main(String[] args) {new ServerFrame();}}class Service extends Thread{String data;BufferedReader InputS;PrintStream OutputS;Socket Client;static String Content="";public Service(Socket ClientSocket) throws Exception{Client = ClientSocket;try {InputS = new BufferedReader(new InputStreamReader(Client.getInputStream()));OutputS = new PrintStream( Client.getOutputStream(),true);}catch (Exception ex) {System.out.println("不能连接客户端!");return;}this.start();}public void run() {System.out.println (this);try {while(true){data = InputS.readLine();if(data.equals("\u0001")){OutputS.println(Content);}else{Content = data +"\u0001"+ Content;System.out.println (Content);if (Content==null) break;else{OutputS.println(Content);System.out.println("From Client: " + Content);}}}Client.close();}catch (Exception ex) {ex.printStackTrace();}try {Client.close();}catch (Exception ex) {ex.printStackTrace();}}}运行结果如下图:实验中遇到的问题:1、图形用户界面设计按钮和文本框设计中的按钮上的事件处理问题2、输入流输出流的问题3、监听端口的问题解决:1、通过java语言程序设计(第2版)中第五章中的5.2事件和事件处理知道了具体事件的处理是使用事件对应的监听者接口中所提供的抽象方法,这些方法需要重新定义,例如本程序中public void actionPerformed(ActionEvent e),该方法用来对对发生在按钮上事件的处理。

(完整word版)JAVA聊天室实验报告

(完整word版)JAVA聊天室实验报告

Java聊天室实验报告班级: ******学号: ********姓名:***目录:一、实验目的.。

.。

...。

.。

..。

..。

....。

..。

...。

...。

...。

..。

.。

.。

3二、所需技术 .。

.。

..。

.。

..。

..。

..。

.。

.。

.。

....。

.....。

.。

.。

.。

...。

3三、需求分析。

..。

.。

.。

..。

...。

.。

..。

.。

...。

..。

.。

.。

..。

3四、系统设计 .。

..。

.......。

...。

.。

....。

...。

.。

...。

....。

..。

.....。

.41、服务器结构 ..。

.。

..。

...。

.。

.。

.。

.。

...。

.....。

.。

.。

.。

42、客户端结构 ..。

.。

.....。

..。

...。

.。

..。

.。

.。

...。

.。

..。

.。

.。

4五、实现细节。

..。

...。

..。

...。

.....。

..。

..。

.。

....。

..。

..51、客户端细节。

.。

..。

.。

...。

..。

.。

..。

...。

..。

..。

.。

52、服务器细节 .。

.。

.。

....。

.。

.。

..。

.。

.。

..。

..。

..。

..。

.。

.。

..6六、系统展示。

...。

.。

.。

.。

.。

.。

.。

.。

.。

..。

..。

..。

..。

..。

.。

(7)七、实验小结。

.。

....。

..。

....。

.。

.。

...。

..。

...。

.。

.。

.。

..。

. (9)Rain153 WeChat 聊天室系统一、实验目的:1、使用Java技术完成聊天室系统,深入学习使用Java语言。

2、使用Java 的多线程机制,深入理解Java多线程技术的应用。

3、使用GUI,对JFrame的深入学习。

4、使用网络编程,掌握基于TCP协议的Socket编程,了解Socket编程的协议约定,掌握简单应用协议的开发.5、使用C/S架构,对网络编程有一定的了解。

二、所需技术本系统要求使用java技术开发。

所需知识包括java程序设计语言、swing基本GUI组件、多线程编程、socket编程、集成开发环境使用eclipse。

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

《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方法,计算器从该类开始执行。

ServerThread<主类)服务器ServerThread类负责创建聊天室服务器的主窗口,该类含有main方法,计算器从该类开始执行。

二详细代码设计聊天室程序设计详细代码如下:客户端代码:package client。

import javax.swing.UIManager。

publicclass Client {public Client(>{Frame1 frame=new Frame1(>。

frame.setVisible(true>。

frame.validate(>。

}publicstaticvoid main(String[] args>{try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(>>。

}catch(Exception e>{e.printStackTrace(>。

}new Client(>。

}}package client。

import java.awt.*。

import java.awt.event.*。

import javax.swing.*。

import .*。

import java.io.*。

public class Frame1 extends JFrame implements Runnable{private JPanel contentPane。

private TextArea textArea1=new TextArea(>。

private Label label1=new Label(>。

private JTextField textField1=new JTextField(>。

private JButton button1=new JButton(>。

private JButton button2=new JButton(>。

private JButton button3=new JButton(>。

Socket socket=null。

BufferedReader in=null。

PrintWriter out=null。

JTextField server=new JTextField(>。

JLabel jLabel1=new JLabel(>。

JLabel jLabel2=new JLabel(>。

JTextField port=new JTextField(>。

JScrollPane jScrollPane1=new JScrollPane(>。

JList jList1=new JList(>。

JLabel jLabel3=new JLabel(>。

DefaultListModel l1=new DefaultListModel(>。

public Frame1(>{try{init(>。

}catch(Exception e>{e.printStackTrace(>。

}}private void init(> throws Exception{server.setText(InetAddress.getLocalHost(>.getHostAddress(>>。

server.setBounds(new Rectangle(69,252,74,22>>。

contentPane=(JPanel>this.getContentPane(>。

textArea1.setEditable(false>。

textArea1.setFont(new java.awt.Font("Dialog",Font.PLAIN,14>>。

textArea1.setBounds(new Rectangle(11,9,383,199>>。

textArea1.setBackground(new Color(66,00,233>>。

textArea1.setForeground(new Color(255,00,00>>。

contentPane.setLayout(null>。

this.setSize(new Dimension(506,314>>。

this.setTitle("客户端">。

label1.setFont(new java.awt.Font("Dialog",Font.PLAIN,12>>。

label1.setForeground(new Color(110,110,250>>。

label1.setText("消息:">。

label1.setBounds(new Rectangle(26,213,32,27>>。

button1.setActionCommand("发送">。

button1.setBounds(new Rectangle(334,216,62,23>>。

button1.setEnabled(false>。

button1.setFont(new java.awt.Font("Dialog",Font.PLAIN,12>>。

button1.setText("发送">。

button1.setForeground(new Color(110,110,250>>。

button1.addActionListener(new java.awt.event.ActionListener(>{ public void actionPerformed(ActionEvent e>{button1_actionPerformed(e>。

}}>。

button2.setBounds(new Rectangle(266,251,58,24>>。

button2.setFont(new java.awt.Font("Dialog",Font.PLAIN,12>>。

button2.setText("连接">。

button2.setForeground(new Color(110,110,250>>。

button2.addActionListener(new java.awt.event.ActionListener(>{ public void actionPerformed(ActionEvent e>{button2_actionPerformed(e>。

}}>。

button3.setBounds(new Rectangle(333,251,62,22>>。

button3.setFont(new java.awt.Font("Dialog",Font.PLAIN,12>>。

button3.setText("退出">。

button3.setForeground(new Color(110,110,250>>。

button3.addActionListener(new java.awt.event.ActionListener(>{ public void actionPerformed(ActionEvent e>{button3_actionPerformed(e>。

}}>。

jLabel1.setFont(new java.awt.Font("Dialog",Font.PLAIN,12>>。

jLabel1.setToolTipText("">。

jLabel1.setHorizontalAlignment(SwingConstants.RIGHT>。

jLabel1.setHorizontalTextPosition(SwingConstants.RIGHT>。

jLabel1.setText("服务器:">。

jLabel1.setForeground(new Color(110,110,250>>。

相关文档
最新文档