




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖北科技学院计算机科学与技术学院 课程设计报告课程名称:面 向 对 象 程 序 课 程 设 计姓名:吕治政 学号:20114031019专业:计算机专业 班级:11计应班 院系:计 算 机 科 学 与 技 术 设计时间: 2011年5月 6月 设计地点: 实 验 室 课程设计目的面向对象程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。课程设计任务与要求:主题: 局域网聊天程序的设计与实现该程序实现局域网内的聊天功能,包括服务器端程序和客户端程序两部分。客户端程序:可连接到服务器,并将消息发送到服务器端和接受服务器端发送来的信息。课程设计选用Eclipse作为开发平台以提高开发效率,尽可能熟练掌握其中一种集成开发环境。建议采用UML建模技术进行系统的分析设计,在报告中画出系统用例图和类图,并将UML图复制到设计报告中。通过这次设计,要求掌握以下内容:面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用类、包、接口的定义与使用常用工具类与算法的实现Java常用标准GUI组件及其事件处理Java的异常处理机制3.课程设计思路: 我的思路是实现客户端与服务器端进行一对一的通信,这是一种最简单的聊天工具,也是对于一个初学者说是最容易理解的。但我们实际生活中的聊天模型不是这样的,例如:腾讯QQ聊天工具是把服务器作为一个中转站,一个客户端向服务器端发出请求申请连接,另一个客户端也向服务器端请求连接,一个客户端先把信息发送到服务器,然后服务器把信息转发给另一个客户端,如果把它做成和腾讯QQ差不多,那还是有一定难度的,那就必须要掌握多线程,其实多线程是一个难点。我的思路如下:实现客户端与服务器端的一对一通信,也就是客户端说一句发送给发送给服务器,服务器接收信息,然后服务器说一句发送给客户端,客户端接收, 就这样你一句我一句。你要写这个简单的聊天工具首先你首先要起一个窗口,客户端一个服务器端一个,在建立客户端与服务器的链接,运用socket和serversocket来编程,然后再输入输出流把客户端的信息发送给服务器端。主要用到的知识如下:图形化用户界面与事件处理Java异常机制的处理网络编程中的socket和serversocket输入输出流4课程设计说明书(1).需求分析:该程序实现局域网内的聊天功能,包括服务器端程序和客户端程序两部分。客户端程序:可连接到服务器,并将消息发送到服务器端和接受服务器端发送来的信息。服务器端程序:负责发送接收和发送给客户的信息 功能如下:连接:当客户端运行起来时客户客户端就连上了服务器端,当然首先要运行服务器,然后再运行客户端。(3)程序缺点:不能同时连多个客户端,如果同时要连接客户端,那就需要用到多线程的内容,同时那需要一定的基础,还有在界面上我的不好,我只是为了简单起见,所以界面框架就是弄了一个单行文本框和一个多行文本框,但我会不断向完美不断接近。 客户端代码:import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import .*;import java.awt.*;import java.awt.event.*;import .Socket;public class ChatClient extends FrameTextField tfTxt=new TextField();static TextArea taContent=new TextArea(); static Socket s=null; DataOutputStream dos=null; public static void main(String args)new ChatClient().launchFrame();while(true) DataInputStream dis=null;try dis = new DataInputStream(s.getInputStream();/从服务器读取数据的流(接收数据的管道) catch (IOException e1) e1.printStackTrace(); String str;try str = dis.readUTF();/把读取到得数据放到str里taContent.setText(str);/把str的内容放到taContent里 catch (IOException e1) e1.printStackTrace(); private void launchFrame() setLocation(400,300);setTitle(客户端);this.setSize(300,300);add(tfTxt,BorderLayout.SOUTH);add(taContent,BorderLayout.NORTH);pack();this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent arg0) disconnect(); System.exit(0); );tfTxt.addActionListener(new TfListener();/taConntent.addActionListener(new TaListener();setVisible(true);connect();public void connect()try s=new Socket(,8008);/dos=new DataOutputStream(s.getOutputStream(); catch (UnknownHostException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();public void disconnect()try dos.close();s.close(); catch (IOException e) e.printStackTrace();private class TfListener implements ActionListener /发送数据的public void actionPerformed(ActionEvent e) /从文本框里得到字符串String str=tfTxt.getText().trim();/再把字符串放到taContent里taContent.setText(str);/再把tf设为空tfTxt.setText();try /把客户端信息写到流里(管道)(把信息写到s.getoutputstream())DataOutputStream dos=new DataOutputStream(s.getOutputStream();/发数据的 /把str的内容写到dos里dos.writeUTF(str);dos.flush(); catch (IOException e1) e1.printStackTrace(); 服务器:import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ComponentEvent;import java.awt.event.ComponentListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.*;import .*;public class ChatServer extends Frameboolean stat=false;static Socket s;TextField tfTxt=new TextField(); static TextArea taContent=new TextArea();DataOutputStream dos=null;public static void main(String args)new ChatServer().launchFrame(); while(true) DataInputStream dis=null; try dis = new DataInputStream(s.getInputStream();/从客户端读取数据的流(管道)接收客户端信息 catch (IOException e1) e1.printStackTrace(); String str;try str = dis.readUTF();/把读取到得数据放到str里taContent.setText(str);/把str的内容放到taContent里 catch (IOException e1) e1.printStackTrace(); public void launchFrame()setLocation(400,300); setTitle(服务器);this.setSize(300,300);add(tfTxt,BorderLayout.SOUTH);add(taContent,BorderLayout.NORTH);pack();this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent arg0) System.exit(0); );tfTxt.addActionListener(new TfListener();/taContent.addActionListener(new TaListener();setVisible(true);ServerStart(); public void ServerStart() try ServerSocket ss=new ServerSocket(8008); while(true) s=ss.accept(); System.out.println(一个客户端已经连接上); catch (IOException e) e.printStackTrace(); private class TfListener implements ActionListener public void actionPerformed(ActionEvent arg0) DataOutputStream dos=null;try dos = new DataOutputStream(s.getOutputStream();/把信息发送给客户端的流(管道) catch (IOException e) e.printStackTrace(); String str1=tfTxt.getText().trim();/把文本框的内容放到字符串里 taContent.setText(str1);/再把字符串内容放到taContent里 tfTxt.setText();/把tf设为空 try dos.wri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目管理第4章教学
- 荆门污水顶管施工方案
- 糖尿病肾病护理教学查房
- 数码相机的基础知识
- 中山职业技术学院《幼儿园活动设计与指导艺术》2023-2024学年第一学期期末试卷
- 濮阳医学高等专科学校《普通话语音》2023-2024学年第二学期期末试卷
- 天府新区航空旅游职业学院《中学综合实践》2023-2024学年第二学期期末试卷
- 岳阳职业技术学院《营销工程》2023-2024学年第二学期期末试卷
- 玻璃门衣柜施工方案
- 重庆经贸职业学院《大学物理B》2023-2024学年第二学期期末试卷
- 民办非企业单位变更登记申请表
- 阿那亚案例详细分析
- 选煤厂安全管理制度汇编
- 住房公积金个人账户合并申请表(文书模板)
- 骨干教师考试题库(全)
- 部编版八年级历史(下)全册教案
- 叉车驾驶员培训手册-共89页PPT课件
- 面试无机化学研究前沿ppt课件
- 【项目申报书】神经环路的形成、功能与可塑性
- 金属矿床地下开采——矿床开拓方法设计(完整版)
- 《工厂安全用电常识》
评论
0/150
提交评论