java课程设计局域网的聊天和文件传输

上传人:人*** 文档编号:473006066 上传时间:2022-08-21 格式:DOC 页数:30 大小:377.51KB
返回 下载 相关 举报
java课程设计局域网的聊天和文件传输_第1页
第1页 / 共30页
java课程设计局域网的聊天和文件传输_第2页
第2页 / 共30页
java课程设计局域网的聊天和文件传输_第3页
第3页 / 共30页
java课程设计局域网的聊天和文件传输_第4页
第4页 / 共30页
java课程设计局域网的聊天和文件传输_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《java课程设计局域网的聊天和文件传输》由会员分享,可在线阅读,更多相关《java课程设计局域网的聊天和文件传输(30页珍藏版)》请在金锄头文库上搜索。

1、目 录1 前言12 需求分析12.1 任务和要求12.2 运行环境12.3 开发工具13 分析和设计13.1 系统分析及设计思路13.2 主要类图13.3 系统流程74 具体代码实现85 课程设计总结255.1 程序运行结果或预期运行结果255.2 设计结论27参考文献27致 谢291 前言编写一个程序来模拟实现局域网的聊天和文件传输,通过编写一个文件服务器程序和一个聊天服务器程序来监听文件的发送和聊天,当有文件传输或聊天事件发生时,如果同意事件的进行,则通过输入流、输出流对文件或聊天信息进行传送,那么接收的,如果是文件就选择保存路径保存,如果是聊天信息就再聊天对话框的信息显示栏里显示,当有一

2、方终止连接,能告知对方,整个事件结束。2 需求分析2.1 任务和要求编写一个程序来实现局域网的聊天和文件传输,具体要求如下:(1)具有一个较好的可视化界面,大体做到美观、大方。(2)能进行聊天和文件传输,在传送文件时,接收方要有选择接不接收的权力。(3)在聊天时,如果没有和对方连接成功,信息发送框为不可编辑状态。(4)当在成员列表中双击某个成员时,系统自动和对方连接。(5)连接成功,就能正常聊天,且聊天时不能发送空信息。(6)在一方主动终止连接时,要及时通知对方,提示“对方已终止连接!”。2.2 运行环境(1)WINDOWS2000/XP系统(2) editplus 或eclipse2.3 开

3、发工具Java 3 分析和设计3.1 系统分析及设计思路3.1.1系统的理论基础(1)TCP/IP协议网络编程中两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服

4、务时向服务器提 出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也 能及时得到服务。(2)基于Socket的java网络编程Socket所支持的协议种类也不光TCP/IP一种,因此两者之间是没有必然联系的。在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程。Server端Listen(监听)某个端口是否有连接请求,Client端向Server 端发出Connect(连接)请求,Server端向Client端发回Accept(接受)消息。一个连接就建立起来了。Server端和Cli

5、ent 端都可以通过Send,Write等方法与对方通信。对于一个功能齐全的Socket,都要包含以下基本结构,其工作过程包含以下四个基本的步骤: 创建Socket; 打开连接到Socket的输入/出流; 按照一定的协议对Socket进行读/写操作; 关闭Socket.(在实际应用中,并未使用到显示的close,虽然很多文章都推荐如此,不过在我的程序中,可能因为程序本身比较简单,要求不高,所以并未造成什么影响。)3.1.2系统的设计本系统大体由对话框模块、文件服务器模块、聊天服务器模块、文件发送模块、文件接收模块、聊天信息发送模块、聊天信息接收的模块、信息打印显示模块、文件 选择模块、成员列表

6、装载模块等。下面列出部分设计:(1)文件发送服务器的设计文件服务器是用来监听是否要传递文件,如果连接成功,有文件发送则创建一个功能齐全的Socket来传递文件,主要的代码为:class FileServer extends Threadpublic void run()tryServerSocket MyServer = new ServerSocket(4331);while(true)Socket si = MyServer.accept();int yon;yon= JOptionPane.showConfirmDialog(null,si.getInetAddress().getHos

7、tAddress() + 向你发出文件接收,接收?,文件接收,JOptionPane.YES_NO_OPTION); if(yon=JOptionPane.YES_OPTION) new fileAccepter(si).start(); else OutputStream os = si.getOutputStream(); os.write(false.getBytes(); os.close(); si.close(); catch(Exception event8) (2)文件接收的设计文件接收是把通过socket流发来的字节流,还原成相应的文件,主要代码为:class fileAcc

8、epter extends Thread byte dataAccepter; Socket s; FileOutputStream fos; OutputStream acceptOS; InputStream acceptIS; ObjectInputStream ois;public fileAccepter(Socket sx) s = sx; JFrame frame = new JFrame();public void run() dataAccepter = new byteDEFAULT_DATASIZE;FileDialog fd=new FileDialog(frame,f

9、ile save dialog,FileDialog.SAVE); fd.setFile(unname); fd.setVisible(true); String dir = fd.getDirectory(); int i = 0,j = 0;System.out.println(dir);if(dir=null) try OutputStream os = s.getOutputStream(); os.write(false.getBytes(); os.close(); catch(Exception event) else try acceptOS = s.getOutputStre

10、am(); acceptIS = s.getInputStream(); ois = new ObjectInputStream(acceptIS); acceptOS.write(true.getBytes(); acceptNameCarryer = (MyVector)ois.readObject(); acceptOS.write(ok.getBytes(); for(i = 0;i acceptNameCarryer.size();i+) fos = new FileOutputStream(dir + acceptNameCarryer.elementAt(i); note(文件

11、+ acceptNameCarryer.elementAt(i) + 正在接收); while(true) j = acceptIS.read(dataAccepter); String str = new String(dataAccepter,0,j); if(str.equals(over) note(文件 + acceptNameCarryer.elementAt(i) + 接收完毕); break; else fos.write(dataAccepter,0,j); fos.close(); catch(Exception event) finally try s.close();

12、acceptOS.close(); acceptIS.close(); ois.close(); catch(Exception event) (3)文件选择模块设计 文件选择模块是用来选择需要传送的文件并载入fileCarryer中,代码为:public void fileSelect()FileDialog fd = new FileDialog(this,file load dialog,FileDialog.LOAD); fd.setVisible(true); boolean repeat = false; String dir = fd.getDirectory() + fd.getFile(); if(dir.equals(nullnull) else for(int i = 0;i realFileCarryer.size();i+) if(File)realFileCarryer.elementAt(i).getPath().equals(dir) repeat = true; if(repeat = false) File file = new File(dir); realFileCarryer.addElement(file); fileCarryer.addEle

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号