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

Java聊天室课程设计一、需求分析1.1开发背景在信息化社会的今天,网络飞速发展,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似MSN、QQ,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具的想法,且通过制作该程序还能更好的学习网络软件编程知识。
网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。
网编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。
在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。
而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。
目前较为流行的网络编程模型是客户机/服务器(C/S)结构。
即通信双方一方作为服务器等待客户提出请求并予以响应。
客户则在需要服务时向服务器提出申请。
服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也得到响应的服务。
1.2设计要求本课程设计的目标是利用套接字socket()设计一个聊天程序,该程序基于C/S模式,客户机器向服务器发聊天请求,服务器应答并能显示客户机发过来的信息。
1.3设计目的通过设计一个网络聊天程序,对套接字、数据报通讯、URL、与URLConnectiom的相关知识有详细的了解和充分的认识。
能将相关的只是运用到相关的实践中去。
页脚内容11.4功能实现聊天室共分为客户端和服务端两部分,服务器程序主要负责侦听客户端发来的消息,客户端需要登录到相应的服务器才可以实现正常的聊天功能。
服务器的主要功能有1)在特定端口上进行侦听,等待客户连接2)用户可以配置服务器的真挺端口3)向已经连接服务器的客户发送系统消息4)统计在线人数5)当停止服务时,断开所有用户的连接客户端的主要功能1)连接到已经开启聊天服务的服务端2)用户可以配置要连接服务器端的ip地址和端口号3)用户可以配置连接后显示的用户名4)当服务器开启时。
java聊天程序实验报告

java聊天程序实验报告《Java聊天程序实验报告》摘要:本实验报告旨在介绍和分析我们设计并实现的基于Java的聊天程序。
通过该程序,用户可以在网络上进行实时的文字交流,实现了简单的聊天功能。
我们将介绍程序的设计思路、实现过程、功能特点以及存在的问题和改进方向。
一、设计思路我们的聊天程序采用了客户端-服务器架构,通过Socket通信实现了用户之间的数据传输。
客户端和服务器端分别使用了Java的Socket和ServerSocket类来建立连接和进行通信。
客户端可以向服务器发送消息并接收其他用户的消息,服务器负责转发消息给其他在线用户。
二、实现过程在实现过程中,我们首先设计了程序的基本框架,包括客户端和服务器端的代码结构。
然后,我们使用Socket和ServerSocket类来建立连接和进行数据传输。
客户端和服务器端分别使用了多线程来处理连接请求和消息转发,以保证程序的稳定性和并发性。
三、功能特点我们的聊天程序具有以下功能特点:1. 用户注册和登录:用户可以注册新账号并登录到服务器,实现了用户身份的识别和管理。
2. 实时聊天:用户可以在聊天室中实时发送和接收消息,与其他在线用户进行文字交流。
3. 离线消息:服务器可以保存用户的离线消息,并在用户上线时进行推送,确保用户不会错过重要消息。
四、存在的问题和改进方向在实验过程中,我们发现了一些问题和改进方向:1. 安全性问题:目前我们的程序还没有实现用户身份验证和消息加密等安全机制,存在一定的安全风险。
2. 用户体验:目前用户界面较为简陋,可以进一步优化界面设计和交互体验。
3. 功能扩展:可以考虑增加文件传输、群聊等功能,丰富程序的功能特点。
结论:通过本次实验,我们成功设计并实现了基于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课程设计报告聊天室一、课程目标知识目标:1. 学生能理解网络编程的基本概念,掌握JAVA Socket编程的基础知识。
2. 学生能运用面向对象编程思想,设计并实现聊天室客户端与服务器的数据传输功能。
3. 学生了解并掌握多线程技术在网络编程中的应用。
技能目标:1. 学生能运用所学知识,独立编写并调试简单的聊天室程序。
2. 学生具备分析问题、解决问题的能力,能针对聊天室程序进行优化和改进。
3. 学生能在团队协作中发挥自己的作用,与他人共同完成一个完整的网络编程项目。
情感态度价值观目标:1. 学生培养对计算机编程的兴趣,增强学习JAVA的自信心。
2. 学生认识到团队合作的重要性,培养良好的团队协作精神。
3. 学生通过编程实践,体验创新与创造的乐趣,培养积极向上的学习态度。
本课程针对高年级学生,结合课本内容,注重理论与实践相结合,以提高学生的实际编程能力为主要目标。
课程要求学生在掌握基本知识的基础上,能够独立完成实际项目,培养其分析问题、解决问题的能力。
同时,课程强调团队协作,使学生学会与他人共同进步,共同成长。
通过本课程的学习,使学生达到知识、技能和情感态度价值观的全面提升。
二、教学内容1. 网络编程基础理论:介绍网络编程的基本概念,包括IP地址、端口号、协议等,使学生理解网络通信的基本原理。
- 教材章节:第三章 网络编程基础2. JAVA Socket编程:讲解Socket编程的原理,指导学生掌握客户端与服务器之间的数据传输方法。
- 教材章节:第四章 Socket编程3. 面向对象编程:运用面向对象编程思想,设计聊天室程序,包括类的定义、封装、继承与多态。
- 教材章节:第二章 面向对象编程基础4. 多线程技术:介绍多线程编程的概念,分析在聊天室程序中如何实现多用户并发通信。
- 教材章节:第五章 多线程编程5. 聊天室程序设计与实现:指导学生完成聊天室客户端与服务器的编写,实现基本的功能需求。
Java聊天室系统程序设计实验报告

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

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会写出想要的网络程序,并不是很难。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JA V A聊天室实验报告******班级:131114学号:********日期:2014年4月23日目录目录 (2)JA V A程序课程设计任务书 (3)摘要 (4)第1章引言 (5)第2章聊天室系统的设计 (7)第3章界面设计 (11)第4章总结 ..................................................................................... 错误!未定义书签。
Java聊天室的设计任务书1.主要内容用JA V A实现基于C/S模式的聊天室系统。
聊天室分为服务器端和客户端部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。
2.具体要求A.服务器端主要功能(1).在特定端口上进行侦听,等待客户端连接。
(2).用户可以配置服务器端的侦听端口,默认端口为8888。
(3).向已经连接到服务器端的用户发送系统消息。
B. 客户端主要功能(1).连接到已经开启聊天服务的服务器端。
(2).用户可以配置要连接的服务器端的IP地址和端口号。
(3).用户可以配置连接后显示的用户名。
(4).用户可以向所有人或某一个人发送消息。
3.主要参考文献及运用工具(1)Bruce Eckel 著Thinking in Java ,李刚著疯狂Java讲义(2)使用技术:Java使用开发工具:Eclipse摘要在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。
基于Java网络编程的强大功能,本次大作业要求使用Java编写一个聊天系统。
一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,但是,由于自己数据库知识的部分遗忘,本程序未连接数据库,采用客户机/服务器架构模式,通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信。
本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。
系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。
使用JAVA语言编写,开发工具采用Eclipse。
服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。
大大增强了程序对服务器资源的利用。
聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息等等功能。
第1章引言1.1 背景在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ,网络聊天时一类的聊天系统的发展日新月异,这些软件唯一的不足就是必须要联网或者下载到它们的服务端,要不然是没法脱离Intenet使用的。
此次大作业既是利用网络编程写一个聊天室,以期通过制作该程序能更好的学习网络软件编程知识,此聊天室为能在一个没有连接到Intenet的局域网使用聊天工具。
网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。
网编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。
在TCP/IP 协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。
而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。
目前较为流行的网络编程模型是客户机/服务器(C/S)结构。
即通信双方一方作为服务器等待客户提出请求并予以响应。
客户则在需要服务时向服务器提出申请。
服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。
1.2 课程设计要求利用套接字socket()设计一个聊天程序,该程序基于C/S模式,,运行服务程序后,服务器创建成功,然后使服务器对某一个设定的端口处于监听状态,当有客户端请求建立连接时,服务器就可接受请求,建立连接!这样服务器和客户端就可相互发送消息,实现聊天功能!1.3 项目功能特点1.基本功能实现服务器监听,客户端连接,可进行多人会话的C/S聊天室。
2.服务器特点(1).在特定端口上进行侦听,等待客户端连接。
(2).用户可以配置服务器端的侦听端口,默认端口为8888。
(3).向已经连接到服务器端的用户发送系统消息。
3. 客户端特点(1).连接到已经开启聊天服务的服务器端。
(2).用户可以配置要连接的服务器端的IP地址和端口号。
(3).用户可以配置连接后显示的用户名。
(4).用户可以向所有人或某一个人发送消息。
1.4 功能实现(1). 注册功能(2). 登陆验证功能功能(3). 客户通过服务器转发,实现聊天功能.(4). 实现公聊功能。
(5). 易用,美观的图形界面,实现系统托盘.第2章聊天室系统的设计2.1 系统需求分析聊天室的设计目标:通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Eclipse等开发工具的运用,拓宽常用类库的应用,用JA V A实现基于C/S模式的聊天室系统。
需要实现以下一些基本功能:A.消息发送:用户可以发送消息给聊天室里所有的用户。
B.消息接受:用户可以接收到其他用户发送给他的消息。
C.聊天室管理功能:聊天室管理员可以启动或者关闭聊天室服务。
2.2 系统开发及运行环境硬件平台:❑CPU:Pentium 2.8GHz以上。
❑内存:256MB以上。
软件平台:❑操作系统:Windows XP。
❑运行环境:JDK Version1.7 Eclipse2.3 系统主要功能要求聊天室分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。
本系统主要实现如下功能:服务器:❑在特定端口上进行侦听,等待客户端连接。
❑用户可以配置服务器端的侦听端口,默认端口为8888。
❑向已经连接到服务器端的用户发送系统消息。
❑一台主机只能启动一个服务器。
客户端:❑连接到已经开启聊天服务的服务器端。
❑用户可以配置要连接的服务器端的IP地址和端口号。
❑用户可以配置连接后显示的用户名。
❑当服务器端开启后,用户可以随时登录和注册。
❑用户可以向所有人发送消息。
2.4 基本设计概念和处理流程本系统运行用JAVA开发,采用C\S结构,系统分为客服端和服务端两大模块,使用Socket类建立套接字实现客服端和服务端得通讯。
(1)系统主体的处理流程:(2)总体结构(3)功能分配客户端和服务器模块功能树图客户端:服务端:2.4 设计原理通信方式1)服务器建立一个TCP监听端口,等待客户端连接。
2)客户连接服务器,服务器生成一个Socket服务该用户。
3)服务器接收来自客户端的聊天信息,然后遍历转发给所有在线用户。
2.5 运行方式具体软件的运行模块组合为客户端窗口的运行环境,服务器无窗口环境,服务器与客户端在运行过程中传输字符,交换信息,处理数据。
第3章界面设计(1)注册登陆界面(2)注册成功界面图(3)重复注册界面图(3)登陆界面图登陆成功既跳出兑话框,服务器端将显示“登陆成功”以及“a client connected”(4)客户端界面图(5)多人群聊界面图。
第4章总结1.实验中遇到的问题以及解决整个程序的框架写出来后,准备启动多个客户端才发现此时不能同时启动多个客户端,后来阅读到课本“多线程”那一章,用多线程解决了此问题。
后来,在客户端以及服务器端的交互过程中,不停的出现着各种异常以及问题,比方说IOException,EOFException,Socket Closed,在不断的调试程序以及在网上找寻的视频学习的过程中才解决这些问题。
后来在写登陆注册时,也会不断的出现问题,不是可以重复注册就是注册了点登陆却不能响应,诸如此类的很多问题,自己调试了许久也并没有解决问题,最后找同学帮忙修改了此段程序。
2.实验总结这次的大作业应该是我接触到的第一个项目,项目虽小,却能暴露出很多问题。
项目伊始,我在网上找了马士兵的java讲课视频来看,为自己做项目找到了一个大体的思路,但是当自己着手做的时候,又会暴露很多问题,其中不乏有基础知识没有掌握牢固的部分,所以说,此次的java大作业也是一个巩固所学知识的很好的机会。
而且,通过这次大作业,我认识到实战一个项目所得到的远比整天抱着书本看知识更能长知识,这个项目使我在运用GUI、线程、java网络和流等的方面更加熟练,对于细小的知识点也更加巩固。
而且,通过这个项目,我更深深的体会到:好的程序不是写出来的,而是改出来的。
此次编程,自己事先罗列了一个提纲:该实现什么功能,要实现此功能首先该实现什么。
就这样一步步剖析到最底层一个很简单的东西,而自己的编码就从这个入手,然后一步步扩充,并不断调试,使程序更加健壮。
通过这次作业我已经认识到了实战的重要性,写这份作业的这段时间是忙碌并且充实的,之后,我也会每天都写一些代码来锻炼自己。
本次实验运用了Eclipse,它确实很智能,很方便,但平时的训练中,我依旧会使用记事本来编码,这样,我才回更扎实的掌握java,我相信一段时间以后,自己的积淀已经够深,自己也有资格去借助Eclipse去完成更多的项目。