Java聊天室系统程序设计实验报告材料

合集下载

Java聊天室程序设计报告

Java聊天室程序设计报告

《Java之聊天室制作》总结报告姓名 __赵其国___________________学号 __2_____________班级 __嵌入式一班__ _____________二〇一二年十二月二十日一,设计目的为了更好的巩固输入输出流,窗体设计,多线程运用,网络通信设计方面的知识。

把所学的课程及相关知识加以融会贯通。

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

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

三,概要设计实现的功能:1,启动服务器端,接收客户端发来的信息,并在服务器端窗体显示客户端聊天信息,再吧信息返给在线用户,窗体背景色为粉色2,启动客户端窗体,窗体背景色为粉色3,用户名编辑框输入用户名,设置字体显红色,单击登录按钮,在显示在线用户列表内显示用户名,同时用户名编辑框不能编辑4,发送编辑框输入发送内容,单击发送按钮,启动输出流,把信息发送出去,同时把发出的信息追加到聊天内容文本域内,显示用户名,时间和发送内容。

5,单击退出按钮,运用File类和JfileChooser类实现聊天信息的保存6,聊天信息文本域,在线用户显示域和发送信息的文本域加了滚动条,其中聊天信息文本域,发送信息的文本域的文字能自动换行。

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

功能不足之处:1,保存聊天信息保存为text格式的有黑块。

保存为Doc格式的要转码不能直接打开2,用户在线显示,只能在用户发送信息时别的用户才能得到在线的用户名,然后再加到在线用户列表中,显示用户在线。

3,聊天室只适合群聊,没有实现技能群聊又能和单个人聊天的功能4,用户输出“退出”后在线用户列表中就会把用户删除,不过没有实现没找到错误出在哪里。

java聊天程序实验报告

java聊天程序实验报告

java聊天程序实验报告Java聊天程序实验报告一、引言随着互联网的快速发展,人们之间的交流方式也在不断改变。

聊天程序作为一种实时通信工具,已经成为人们日常生活中必不可少的一部分。

本实验旨在通过使用Java编程语言,设计并实现一个简单的聊天程序,以探索实时通信的原理和机制。

二、实验目的1. 学习和掌握Java编程语言的基本语法和面向对象的编程思想;2. 了解Socket编程的基本原理和实现方式;3. 设计并实现一个简单的聊天程序,实现用户之间的实时通信。

三、实验过程1. 确定程序的基本功能和界面设计。

聊天程序需要实现用户之间的即时通信,并提供简单的用户界面用于输入和显示聊天内容。

2. 使用Java编程语言,创建一个服务器端程序和多个客户端程序。

服务器端程序负责接收和转发客户端的消息,客户端程序负责发送和接收消息。

3. 使用Socket编程,建立服务器和客户端之间的连接。

服务器端程序监听指定的端口,等待客户端的连接请求;客户端程序通过指定服务器的IP地址和端口号,连接到服务器。

4. 实现消息的发送和接收功能。

客户端程序可以通过输入框输入消息,并通过Socket将消息发送到服务器;服务器端程序接收到消息后,将消息转发给其他客户端。

5. 实现消息的显示功能。

客户端程序通过界面显示接收到的消息,并可以将消息保存到本地。

四、实验结果经过实验,我们成功地实现了一个简单的Java聊天程序。

用户可以通过输入框输入消息,并通过服务器端进行消息的转发。

其他客户端可以接收到转发的消息,并在界面上进行显示。

同时,我们还实现了消息的保存功能,用户可以将接收到的消息保存到本地文件中。

五、实验总结通过本次实验,我们深入了解了Java编程语言的基本语法和面向对象的编程思想。

同时,我们也学习了Socket编程的原理和实现方式。

通过实践,我们掌握了如何使用Java编写一个简单的聊天程序,实现用户之间的实时通信。

然而,本实验只是一个简单的聊天程序,还有很多可以改进和扩展的地方。

java聊天程序实验报告

java聊天程序实验报告

java聊天程序实验报告《Java聊天程序实验报告》摘要:本实验报告旨在介绍和分析我们设计并实现的基于Java的聊天程序。

通过该程序,用户可以在网络上进行实时的文字交流,实现了简单的聊天功能。

我们将介绍程序的设计思路、实现过程、功能特点以及存在的问题和改进方向。

一、设计思路我们的聊天程序采用了客户端-服务器架构,通过Socket通信实现了用户之间的数据传输。

客户端和服务器端分别使用了Java的Socket和ServerSocket类来建立连接和进行通信。

客户端可以向服务器发送消息并接收其他用户的消息,服务器负责转发消息给其他在线用户。

二、实现过程在实现过程中,我们首先设计了程序的基本框架,包括客户端和服务器端的代码结构。

然后,我们使用Socket和ServerSocket类来建立连接和进行数据传输。

客户端和服务器端分别使用了多线程来处理连接请求和消息转发,以保证程序的稳定性和并发性。

三、功能特点我们的聊天程序具有以下功能特点:1. 用户注册和登录:用户可以注册新账号并登录到服务器,实现了用户身份的识别和管理。

2. 实时聊天:用户可以在聊天室中实时发送和接收消息,与其他在线用户进行文字交流。

3. 离线消息:服务器可以保存用户的离线消息,并在用户上线时进行推送,确保用户不会错过重要消息。

四、存在的问题和改进方向在实验过程中,我们发现了一些问题和改进方向:1. 安全性问题:目前我们的程序还没有实现用户身份验证和消息加密等安全机制,存在一定的安全风险。

2. 用户体验:目前用户界面较为简陋,可以进一步优化界面设计和交互体验。

3. 功能扩展:可以考虑增加文件传输、群聊等功能,丰富程序的功能特点。

结论:通过本次实验,我们成功设计并实现了基于Java的聊天程序,实现了简单的聊天功能。

在未来,我们将继续改进程序,提高安全性和用户体验,丰富功能特点,使程序更加完善和实用。

java 聊天室 实验报告

java 聊天室 实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Java聊天室系统程序设计实验报告

Java聊天室系统程序设计实验报告

Java聊天室系统程序设计实验报告院(系):信息与通信工程系专业:计算机应用技术班级:学号:姓名:指导老师:2013/6/8目录第一部分:系统设计总述............................................................................1.设计目的:......................................................................................2.设计总体要求:..................................................................................3.实现目的:...................................................................................... 第二部分:系统需求分析............................................................................1.系统任务描述....................................................................................2.系统功能分析....................................................................................3.系统可行性分析.................................................................................. 第三部分:系统设计................................................................................1.系统总体结构设计................................................................................2.系统主体的处理流程..............................................................................3.系统流程逻辑.................................................................................... 第四部分:代码分析................................................................................1.服务器端部分代码................................................................................2.客户端部分代码.................................................................................. 第五部分:系统的具体实现..........................................................................界面设计.......................................................................................... 第六部分:小结.................................................................................... 第七部分:参考文献................................................................................ 第一部分:系统设计总述1.设计目的:1.在开发技术和过程中,能够充分学习和使用JAVA的技术,进一步培养学生面向对象程序设计的思想,加深对面向对象程序设计特性的理解。

java实训聊天系统报告总结

java实训聊天系统报告总结

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

实验报告java聊天程序

实验报告java聊天程序

实验报告java聊天程序实验报告:Java聊天程序引言:随着互联网的高速发展,聊天已经成为人们生活中不可或缺的一部分。

为了更好地理解和应用Java语言,我们进行了一项关于Java聊天程序的实验。

本实验报告将介绍实验目的、实验环境、实验内容、实验结果以及实验总结等相关内容。

一、实验目的:本实验的主要目的是通过编写Java程序实现一个简单的聊天程序,通过网络连接两个客户端,使客户端之间可以实现文字的交互。

通过实验,我们可以更好地理解网络通信的基本概念和Java语言的网络编程。

二、实验环境:1. 操作系统:Windows 102. 开发工具:Eclipse IDE3. Java版本:Java 84. 网络环境:局域网环境三、实验内容:本实验主要包括三个部分:客户端程序、服务器程序和网络通信。

1. 客户端程序:客户端程序主要负责向服务器发送消息并接收服务器发送的消息。

在客户端程序中,我们使用Java的Socket类进行网络通信,并使用多线程实现客户端的并发访问。

2. 服务器程序:服务器程序主要负责接收客户端发送的消息,并将消息广播给其他连接的客户端。

在服务器程序中,我们使用Java的ServerSocket类进行网络通信,并使用多线程实现服务器的并发处理。

3. 网络通信:通过网络通信,实现客户端和服务器之间的消息传输。

在本实验中,我们使用Java的Socket类和ServerSocket类进行网络通信,并使用TCP/IP协议建立可靠连接。

四、实验步骤:1. 客户端程序编写:首先,我们编写客户端程序。

在客户端程序中,我们创建一个Socket对象,通过该对象与服务器建立连接。

然后,我们使用输入输出流读写数据,并使用多线程实现客户端的并发处理。

2. 服务器程序编写:其次,我们编写服务器程序。

在服务器程序中,我们创建一个ServerSocket对象,通过该对象监听指定端口的连接请求。

当有客户端连接到服务器时,我们创建一个新的线程处理该连接,接收客户端发送的消息并转发给其他连接的客户端。

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

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

聊天程序设计实验报告范文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会写出想要的网络程序,并不是很难。

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

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的技术,进一步培养学生面向对象程序
设计的思想,加深对面向对象程序设计特性的理解。

2.学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全
过程。

3.进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、文件和网络输入
输出流编程、Java数据库编程等。

4.通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。

2.设计总体要求:
1.问题的描述与程序将要实现的具体功能。

2.程序功能实现的具体设计思路或框架,并检查流程设计。

3.代码实现。

4.程序测试。

5.设计小结(包括)
3.实现目的:
本软件是一个实用聊天程序。

项目要实现以下目标:
1)建立服务器端和客户端并进行连接;
2)利用线程设计结构合理,运行效率较高的聊天室;
3)实现写消息,发消息,回复,查看聊天记录等功能;
1.系统任务描述
本系统是基于java开发的聊天室。

如有用户聊天,服务器会显示出聊天信息。

服务器端和客户端可以互相发送和接收信息,还可以查看聊天记录。

如果服务器还没有启动,则客户端是不可以利用聊天室收发信息的。

如果在运行过程中,服务器断开则系统会有提示。

2.系统功能分析
系统的功能需求
聊天室程序通常需要完成以下一些基本功能:
A.登录聊天室;
B.启动服务器;
C.关闭服务器;
D.用户之间的聊天;
E.退出聊天室。

3.系统可行性分析
从技术方面来看,java语言的优点主要表现在:简单、面向对象、多线程、安全性等方面。

(1)简单性
Java实现了自动的功能收集,简化了内存管理的工作,这使程序设计更简便,同时减少了出错的可能。

(2)面向对象
Java提供了简单的类机制和动态的架构模型。

对象中封装了它的状态变量和方法。

很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决方案。

Java同样支持继承特性,java的类可以从其他类中继承行为,但java只支持类的单重继承,即每个类只能从一个类中继承。

Java支持界面,界面允许程序员定义方法但不立即实现,一个类可以实现多个界面,利用界
面可以得到多重继承的许多优点而又没有多重继承的问题。

(3)多线程
多线程使应用程序可以同时进行不同的操作,处理不同的事件。

在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。

多线程保证了较高的执行效率。

(4)安全性
用于网络、分布环境下的java必须要防止病毒的入侵,java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。

第三部分:系统设计
系统设计是本系统开发的重要阶段,它直接影响目标系统的质量,是整个开发工作的核心。

系统设计阶段主要任务是:在系统分析提出的逻辑模型的基础上,科学合理地进行物理模型设计。

1.系统总体结构设计
2.系统主体的处理流程
3.系统流程逻辑
第四部分:代码分析
本系统的IP为本机的网络虚拟IP(127.0.0.1),在任何电脑上都能用,端口号设置为9000。

注意:客户端只有在服务端开启的情况下才能正常聊天。

1.服务器端部分代码
public TestServer_zmx() //主构造方法及布局
ServerSocket ss=new ServerSocket(9000);//服务器建立端口号9000
Socket s1 = ss.accept();//服务器监听是否有连接
class MyAction implements ActionListener //处理发送按钮的类
class MyThreadWriter extends Thread //处理输出流类
class MyThreadRead extends Thread {//处理输入流读入类
class qingping implements ActionListener //处理清屏类
class xiaoxijilu extends JFrame implements ActionListener //处理消息记录类
2.客户端部分代码
public TestClient_zmx() //主构造方法及布局
Socket s1 = new Socket("localhost",9000);//建立与服务器的连接,为本地主机,9000号端口class MyAction1 implements ActionListener //处理发送按钮的类
class MyThreadWriter1 extends Thread //处理输出流类
class MyThreadRead1 extends Thread //处理输入流读入类
class qingping1 implements ActionListener //处理清屏类
class xiaoxijilu1 extends JFrame implements ActionListener //处理消息记录类
第五部分:系统的具体实现
界面是系统之间最直接的交互界面,界面的友好性体现了软件设计的质量,并在很大的程度上决定了软件是否成功。

界面设计
(1).服务器端的启动界面
(2).客户端界面
(3).服务器端和客户端聊天的界面
(4).设置界面图 A.设置字体
B.设置字体大小
C.设置字体颜色
实用
D.显示聊天记录
第六部分:小结
这次设计经过不懈的努力,程序基本满足聊天的需要。

完成后的程序实现了写消息,发消息,回复,查看聊天记录等功能。

程序设计期间,通过询问老师、同学和网上搜索相关解答等多种方式学习到很多课堂上没有的知识,增强了解决实际问题的能力。

在此之前,对于java编程技术没有很深入的认识,对其工作方式和原理缺乏透彻的认识。

在这段时间里,我认真的学习了java语言开发,对编程思想有了进一步的体会,养成了一些良好的编程习惯。

程序虽然完成了,但是距离完美还存在一定的差距,用java开发大型项目还有很多我需要去努力学习的知识。

希望自己能不断学习和实践,争取以后做得更好。

第七部分:参考文献
【1】袁然、郑自国、邹丰义编著。

《JAVA案例开发集锦》。

电子工业出版社
【2】刘志成编著。

《JAVA程序设计案例教程》。

清华大学出版社
【3】张基温编著。

《JAVA程序开发教程》。

清华大学出版社
【4】袁晓华编著。

《JAVA面向对象程序设计教程》。

机械工业出版社
文案。

相关文档
最新文档