JAVA实训评测报告--聊天室
- 格式:doc
- 大小:89.00 KB
- 文档页数:15
综合实验聊天室的设计一、实验目的理解和掌握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聊天系统。
二、项目目标1. 设计一款用户界面友好,操作简单的聊天系统。
2. 实现用户的注册和登录功能,保障系统的安全性。
3. 提供实时聊天功能,用户可以通过系统进行文字、图片的交流。
4. 支持多人群聊、私聊的功能。
5. 实现聊天记录的存储和查看。
三、系统架构1. 前端设计本次项目的前端开发使用Java的Swing库进行界面设计,保障用户操作的友好性和系统的易用性。
2. 后端开发后端使用Java语言进行开发,使用Socket实现实时通讯功能,使用MySQL进行用户数据的存储和管理。
四、功能实现1. 用户注册和登录功能用户可以通过系统注册新账号,并使用已有账号进行登录。
系统会对用户输入的信息进行验证,保障系统的安全性。
2. 实时聊天用户可以通过系统进行实时的文字、图片交流,确保用户之间的沟通顺畅和效率。
3. 多人群聊、私聊功能系统支持多人同时进行群聊,同时也支持用户进行私聊。
用户可以根据自己的需求选择不同的聊天方式。
4. 聊天记录存储和查看系统会将用户的聊天记录进行存储,并提供查看功能,用户可以随时查看自己的聊天记录。
3. 数据库设计设计数据库存储用户的基本信息、聊天记录等数据,确保数据的安全性和完整性。
4. 功能实现实现用户注册、登录、实时聊天、群聊、私聊等功能,并保障系统的稳定性和安全性。
六、总结本次实训项目成功设计并开发了一款功能完善的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等。
第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编程语言创建一个简单的聊天室应用程序。
通过使用Socket和ServerSocket类,实现了客户端和服务器之间的实时通讯。
在实验过程中,我们学习了如何建立连接、发送和接收消息,并处理异常情况。
最终,我们成功地实现了一个基本的聊天室应用程序,并对其进行了测试和验证。
介绍:聊天室应用程序是一种常见的网络应用,它允许用户在网络上实时交流。
在本实验中,我们使用Java编程语言创建了一个简单的聊天室应用程序。
该程序包括一个服务器端和多个客户端,它们之间通过网络进行通讯。
实验步骤:1. 创建服务器端首先,我们创建了一个Server类作为服务器端。
在Server类中,我们使用ServerSocket类来监听指定端口,并在有新的客户端连接时创建一个新的线程来处理通讯。
在服务器端,我们实现了一个简单的消息广播功能,即当一个客户端发送消息时,服务器将该消息发送给所有连接的客户端。
2. 创建客户端接下来,我们创建了一个Client类作为客户端。
在Client类中,我们使用Socket类来连接服务器,并通过输入输出流来发送和接收消息。
客户端可以通过输入框输入消息,并在发送后将其显示在聊天窗口中。
同时,客户端也能够接收其他客户端发送的消息,并将其显示在聊天窗口中。
3. 测试和验证最后,我们对创建的聊天室应用程序进行了测试和验证。
我们启动了一个服务器端和多个客户端,并进行了实时通讯。
我们测试了消息的发送和接收功能,以及异常情况的处理。
通过测试,我们验证了聊天室应用程序的正常运行和稳定性。
结论:通过本实验,我们成功地使用Java编程语言创建了一个简单的聊天室应用程序。
通过Socket和ServerSocket类,我们实现了客户端和服务器之间的实时通讯,并测试和验证了其功能和稳定性。
在今后的学习和实践中,我们将进一步完善和扩展这个应用程序,以满足更多的需求和场景。
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实训中,我们成功地设计和实现了一个聊天系统。
该系统具有以下功能:用户注册、登录、加好友、发送消息等。
在设计这个系统之前,我们进行了许多需求分析的工作,确定了系统的具体功能和要求。
然后,我们设计了系统的架构,包括前端界面和后端数据库的设计。
在开发过程中,我们采用了Spring Boot框架,使用了MySQL作为后端数据库。
由于我们的系统需要进行实时通信,因此我们还使用了基于WebSocket的技术。
在实际的开发过程中,我们首先完成了用户注册和登录的功能。
用户可以通过输入用户名和密码进行注册,并在登录页面输入正确的用户名和密码进行登录。
如果登录成功,系统将会跳转到聊天界面。
如果没有注册或者用户名密码输入错误,系统会给出相应的提示信息。
接下来,我们实现了添加好友的功能。
用户可以通过输入好友的用户名来添加好友。
当用户输入好友的用户名并点击添加按钮时,系统会检查数据库中是否存在该用户。
如果存在,则将该用户添加到当前用户的好友列表中;如果不存在,则给出相应的提示信息。
我们实现了发送消息的功能。
用户可以在输入框中输入消息,并点击发送按钮来发送消息。
在点击发送按钮后,用户的好友列表中的用户会收到消息。
用户可以选择查看已发送和已接受的消息。
在整个开发过程中,我们遇到了许多问题,并从中学到了许多经验。
我们学会了如何进行需求分析,如何将需求转化为具体的功能和要求。
我们学会了如何设计系统的架构,并根据架构来进行具体的开发工作。
我们学会了如何解决问题和调试程序,在遇到问题时能够快速找到解决方法。
通过这个实训项目,我们不仅学到了Java语言和Spring Boot框架的相关知识,还学会了团队合作和项目管理的技巧。
我们在与团队成员的合作中学会了沟通和协调的重要性,以及如何高效地分工合作。
在整个项目过程中,我们对实际的软件开发流程有了更深入的了解,提高了我们的编程能力和解决问题的能力。
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实训》设计报告电子信息项目学院专业:软件技术班级: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>>。