“基于Socket的网络聊天系统的设计与实现”课程设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

《计算机网络课程设计报告》学院:计算机科学学院专业:计算机科学与技术班级:08级01班姓名:学号:小组成员:ABCDEF2011-7-13项目内容:基于Socket的网络聊天系统的设计与实现实验目的:基于Socket套接口,实现网络聊天系统的设计与实现,让我们掌握Socket的编程技术及网络服务的技术,让同学们更加深刻的了解,并掌握这方面的知识。实验环境:操作系统:windows2000或windows2003;内存:256M以上;基于eclipse的JAVA运行环境。设计方案:首先,我们知道此应用软件需实现网络中多台主机的信息互通,实现语言文字得互聊,因此涉及到主机网络互联的问题,所以必须会应用到网络协议,可以用UDP或TCP。其次,既然要求设计基于Socket的网络聊天系统,那就必须对Socket有一个充分的了解。最后,不管运用何种语言设计此程序,都要求对该语言有一个透彻的了解,并能运用自如。实现流程:启动电脑,打开能运行该程序的环境,必须保证代码的正确性;进行窗体框架的设计,实现网络连接,并达到网络聊天的功能;在以上步骤的成功进行下达到设计要求的基于Sockets的局域网内聊天系统的函数实现的目的。结果及分析:程序运行以后,经过局域网内测试,实现了在局域网内的好友添加,聊天等功能,基本上完成了本实验的全部要求。但由于时间仓促,再加上本人水平有限,对这方面的知识还有所欠缺,经过这次课程设计,对此有了一个很大的提高。源程序;一Client端程序代码packagewangluo;importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjavax.swing.JFrame;importjavax.swing.JTextField;publicclassClientimplementsActionListener{privateJTextFieldjtf=newJTextField(,20);JFramejf=newJFrame(不用注册直接登陆);publicClient(){jf.setLayout(newBorderLayout());jf.add(jtf,BorderLayout.NORTH);jtf.addActionListener(this);jf.pack();jf.setLocation(500,300);jf.setResizable(false);jf.setVisible(true);jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}@OverridepublicvoidactionPerformed(ActionEvente){jf.dispose();newThreadClient(jtf.getText());}publicstaticvoidmain(String[]args){newClient();}}二ThreadClient端程序代码:packagewangluo;importjava.awt.BorderLayout;importjava.awt.GridLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.net.Socket;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JTextArea;importjavax.swing.JTextField;publicclassThreadClientextendsThreadimplementsActionListener{privateStringname=;privateinta;privateJTextFieldjtf=newJTextField(,25);privateJTextAreajta=newJTextArea(30,40);privateDataOutputStreamdos;privateDataInputStreamdis;privateSockets;publicThreadClient(Stringtemp){this.name=temp;JFramejf=newJFrame(聊天界面);jf.setLayout(newBorderLayout());JButtonjb=newJButton(发送);JPaneljp=newJPanel();jta.setLayout(newGridLayout(1,2));jp.add(jtf);jp.add(jb);jf.add(jp,BorderLayout.NORTH);jf.add(jta);jb.addActionListener(this);jtf.addActionListener(this);jf.pack();jf.setLocation(450,200);jf.setVisible(true);jf.setSize(400,350);try{s=newSocket(127.0.0.1,1024);dos=newDataOutputStream(s.getOutputStream());dis=newDataInputStream(s.getInputStream());dos.writeUTF(1.1);dos.writeUTF(name);System.out.println(heh);}catch(Exceptione){e.printStackTrace();}jf.addWindowListener(newWindowAdapter(){@OverridepublicvoidwindowClosing(WindowEvente){try{dos.writeUTF(1.4);Thread.sleep(2000);dis.close();dos.close();s.close();}catch(Exceptione1){e1.printStackTrace();}System.exit(1);}});this.start();}@Overridepublicvoidrun(){while(true){try{Thread.sleep(3000);dos.writeUTF(1.3);jta.setText(dis.readUTF());}catch(Exceptione){break;}}}@OverridepublicvoidactionPerformed(ActionEventae){Stringcomn=jtf.getText();if(!.equals(comn)){try{dos.writeUTF(1.2);dos.writeUTF(comn);jtf.setText();jtf.requestFocus();}catch(Exceptione){e.printStackTrace();}}}}三ThreadServer端程序代码:packagewangluo;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.IOException;importjava.net.ServerSocket;importjava.net.Socket;publicclassThreadServerextendsThread{//privateStringBuffermessage=newStringBuffer();privatestaticStringmessage=;privateSockets;privateStringname=;publicThreadServer(Sockets){this.s=s;}publicvoidrun(){try{DataOutputStreamdos=newDataOutputStream(s.getOutputStream());DataInputStreamdis=newDataInputStream(s.getInputStream());while(true){Stringtemp=dis.readUTF();if(1.1.equals(temp)){name=dis.readUTF();message=欢迎+name+进入!+\n+message;}elseif(1.2.equals(temp)){message=name+说:+dis.readUTF()+\n+message;}elseif(1.3.equals(temp)){dos.writeUTF(message);}elseif(1.4.equals(temp)){message=name+离开+\n+message;break;}}dos.close();dis.close();}catch(Exceptione){e.printStackTrace();}}publicstaticvoidmain(String[]args)throwsException{ServerSocketss=newServerSocket(1024);while(true){Sockets=ss.accept();newThreadServer(s).start();}}}安装演示说明详细步骤:首先将自己所在电脑作为服务器端,在JAVA环境下运行该程序,出现以下页面:再在光标所示位置输入用户名称,或直接按回车键进入聊天界面:再将其他主机作为客户端,与服务器所在的主机进行连接,成功后界面如下:在输入框中输入要发送的信息,点击发送如上所示,本实验演示完毕。实验总结:通过本次计算机网络课程设计,我更加充分的理解了课本上的知识,并能够加以扩展,从而应用于实践当中,这几天的课程设计令我受益匪浅,很多平时模棱两可的知识点都认真复习并实践了。我意识到我们所学的东西将来都是要付诸实践的,所以一切要从实际情况出发,理论联系实际,这样才能真正发挥我们所具备的能力。经过此次课程设计,我向我成功的目标又迈进了一步

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功