java课程设计报告_第1页
java课程设计报告_第2页
java课程设计报告_第3页
java课程设计报告_第4页
java课程设计报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机与信息工程系java课程设计报告专业 班级 学号 姓名 报告完成日期 指导教师 评语:成绩:批阅教师签名: 批阅时间:网络聊天室一、设计任务与目标 现在社会是信息化的社会,什么都追求着快、新、好。在这种快节奏的生活方式中,人们之间的通讯联系就显得非常的重要了。商业之间的合作,人们之间的友谊交往,甚至热门谈到的网上恋爱等等都需要通讯联系。而过去的鸿雁传书已经是满足不了现代人的欲望了。既然这网络这么的流行,过去的联系方式又这么的落后,因此人们的目光就转向了网络通讯。聊天工具就是一种网上很普遍但是又很重要的通讯方式。本聊天软件旨在为同一局域网用户间提供便利的局域网服务,局域网用户可以通过此聊天

2、软件在各终端相互发送聊天信息,同时可以快速传送文件,方便局域网用户间的快速有效通信。二、.设计思路整体方案的制定服务器端后台数据库线程处理线程处理tcp套接字监听端口tcp套接字 客户端2udp套接字udp套接字客户端1tcp套接字tcp套接字聊天工具的系统运行图基本设计思想:采用客户机/服务器(c/s)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。客户端的设计用户之间通过udp连接来实现用户间的

3、通讯.每个用户在该聊天工具进入主界面时便创建一个线程,无限监听其他好友发来的消息,如果某个好友发来消息,便接受该消息并弹出聊天界面和显示其发来的消息.聊天消息的接受的部分的核心程序流程如下图所示:线程继续监听弹出的聊天界面和显示的信息接到信息线程无限监听客户端中实现udp的线程 图 聊天消息的接受的部分的核心程序流程聊天消息的发送的部分的核心程序流程如下图所示:建立socke实现通信并发送聊天的信息输入聊天的信息客户端中聊天界面 图 聊天消息的发送的部分的核心程序流程服务器端的设计服务器与客户间通过套接口socket(tcp)连接。在java中使用套接口相当简单,java api为处理套接口的

4、通信提供了一个类.socket.,使得编写网络应用程序相对容易服务器采用多线程以满足多用户的请求,通过jdbc与后台数据库连接,并通过创建一个serversocket对象来监听来自客户的连接请求,默认端口为8888,然后无限循环调用accept()方法接受客户程序的连接。服务器程序核心部分的流程如下图所示:收到请求find收到请求new收到请求login结束线程无限监听客户请求服务器端创建一个线程程处理用户登陆信息处理用户查找信息处理用户注册信息 三、具体实现服务器端实现代码:import java.io.*;import .*;import java.util.*;public class

5、chatserver boolean started=false;serversocket s=null;list clients=new arraylist();public static void main(string args) new chatserver().start(); /*启动线程*/public void start() try s=new serversocket(8888); started=true; catch(bindexception e2) system.out.println(端口使用中); system.out.println(请关掉相关程序,并重新运行

6、服务器!); system.exit(0); catch(ioexception e) e.printstacktrace(); trywhile(started) /*当客户端有连接上时开始接收*/ socket ss=s.accept(); client c=new client(ss);system.out.println(a have connect!); new thread(c).start(); clients.add(c); catch (ioexception e) /*突然关闭客户端异常处理*/system.out.println(client closed!); fina

7、llytry s.close(); catch (ioexception e) e.printstacktrace(); class client implements runnableprivate socket ss;private datainputstream dis=null;private dataoutputstream dos=null;private boolean bconnected=false;public client(socket ss) /*接收客户端信息*/this.ss=ss;try dis=new datainputstream(ss.getinputstr

8、eam();dos=new dataoutputstream(ss.getoutputstream(); bconnected=true; catch (ioexception e) e.printstacktrace();public void send(string str) /*发送客户端信息*/try dos.writeutf(str); catch (ioexception e) clients.remove(this);system.out.println(对方退出了!);/e.printstacktrace();public void run() try while(bconne

9、cted) string st=dis.readutf(); system.out.println(st); for(int i=0;iclients.size();i+) client c=clients.get(i); c.send(st); system.out.println(a string send!); catch(eofexception e) system.out.print(client closed!); catch (ioexception e) e.printstacktrace(); finally try if(dis!=null) dis.close(); if

10、(dos!=null) dos.close(); if(ss!=null) ss.close(); catch (ioexception e1) e1.printstacktrace(); 客户端实现代码:import java.awt.*;import java.io.*;import java.awt.event.actionevent;import java.awt.event.actionlistener;import java.awt.event.windowadapter;import java.awt.event.windowevent;import java.io.ioexce

11、ption;import .*;import java.text.dateformat;import java.util.date;public class chatclient public static void main(string args) new myframe().launchframe();class myframe extends frame /*构造客户端界面*/textfield tf=new textfield();textarea ta=new textarea();panel p=new panel();button b1=new button(发送文件);but

12、ton b2=new button(发送图片);socket soc=null;dataoutputstream dos=null;datainputstream dis=null;private boolean bconnected=false;thread tre=new thread(new recvthread(); /*产生线程对象*/public void launchframe()this.setbounds(300, 300, 400,300);add(p,borderlayout.north);add(tf,borderlayout.south);add(ta,borderl

13、ayout.center);p.add(b1);p.add(b2);pack();this.addwindowlistener(new windowadapter() public void windowclosing(windowevent e)disconnect();system.exit(0););tf.addactionlistener(new tflistener();this.setvisible(true);connect();tre.start();public void connect() /*与服务器端连接*/try soc=new socket(127.0.0.1,88

14、88); dos=new dataoutputstream(soc.getoutputstream(); dis=new datainputstream(soc.getinputstream();system.out.println(connected!); bconnected=true; catch (unknownhostexception e) e.printstacktrace(); catch (ioexception e) e.printstacktrace();public string getdatetime_system() /*设置日期输出格式*/ dateformat

15、dt=dateformat.getinstance(); string datetime=dt.format(new date().tostring(); return datetime; public void disconnect() /*断开连接*/try dos.close();dis.close();soc.close(); catch (ioexception e) e.printstacktrace();private class tflistener implements actionlistener /*发送信息监听类*/public void actionperformed

16、(actionevent e) string s= tf.gettext().trim(); /ta.settext(s); tf.settext(); try dos.writeutf(s);dos.flush(); catch (ioexception e1) e1.printstacktrace();private class recvthread implements runnablepublic void run() trywhile(bconnected)string s=getdatetime_system();string str=昵称:+this.hashcode()+n+s

17、+n+dis.readutf();ta.settext(ta.gettext()+str+n);catch(socketexception e)system.out.println(退出了,bye!);catch(eofexception e)system.out.println(退出了,bye-bye!); catch (ioexception e) e.printstacktrace(); 五、程序运行的测试与分析服务器连接成功界面如下图所示:客户端运行结果如下图所示:聊天运行结果如下图所示:六、总结 通过这次毕业设计,我学到了很多.以前学过java这门课程,也做过关于java的简单的程序

18、,但是这次的设计对我来说是一个比较大的挑战,我还是头一次做这么复杂的设计.通过这次设计我主要学到了客户端和服务器的通讯,还有学到了遇到困难应该怎样解决的方法.通过这次的课程设计我学习掌握了很多的知识。不仅在实际动手能力中有了提高,在理论知识方面也有了很大的提高。在准备这个课题前通过自学准备了很多有关网络和线程方面的知识,在刚接触这些知识点时确实感觉到抽象难懂,后来在逐步的学习练习中才慢慢理解掌握。网络编程和多线程的应用在java实际应用中有很大的利用价值,因此我希望通过这次练习提高自己在这两个方面的应用能力。由于都是些陌生的知识,在实际应用中遇到了很多的问题,最后经过查找资料和问询得以解答。信息的传输用到了流处理方面的知识,由于多次用到这方面的知识,在练习中对此有了更多的认识,从陌生的知识逐渐熟练掌握,这要得益于练习的功劳。这次课程设计感触最深的一点是软件的稳定性非常重要,要想写出安全稳定的程序必须对各种异常进行适当的处理,否则程序很容易出错。在学习初期,我们就应该保持良好的编程风格和解决异常处理的思想。此次做的聊天界面太过简单,这一点不太符合良好的界面这一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论