5.4 利用tcp实现文件传输 信息工程系 向模军 Tel: QQ:

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

第一章 第三节 java 的基本语法 第一章 第十三节 输入输出流. 上节回顾  掌握 java 中异常的概念  掌握 java 异常的分类  掌握 java 异常的捕获和处理.
檔案處理.
全国二级Java考试中的几个难点 输入输出流和文件处理 Java的多线程机制 Applet类与Applet小程序 Java的异常处理.
“亲子教育”心理成长任务 主讲:刘晓红 广州中医药大学心理辅导中心 主任 国家心理咨询师职业资格 培训师 全国人才专业技术能力测评EAP 高级讲师.
体育教师提高科研能力的有效策略 ——从观察、分析、选题、构思谈起
JAVA程序设计 天津工程职业技术学院计算机工程系软件技术教研室.
第十五章 网络编程.
山东大学附属中学 甄广军 Tel: 初中体育 课堂教学设计要点 山东大学附属中学 甄广军 Tel:
好爸妈胜过好老师 激活兴趣、培养能力、以文育人 主讲:谢晓鸿 快乐作文杂志社 重庆小记者站.
例外與檔案處理 例外處理 拋出例外 串流 Stream FileReader、FileWriter
Java Programming Spring, 2013
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
輸入輸出 學習目標 瞭解串流與輸入輸出的關係 認識InputStream、OutputStream繼承架構
创意源自激情,技术成就梦想 畅翼创新俱乐部 2012年春俱乐部第三次技术培训 赵程.
第20讲 Java的输入与输出流(上) 1/.
目标 运用File类进行文件操作 理解流,标准输入/输出流的概念
6. Java输入输出.
实验4 基于Socket的C/S程序开发 实验目的
第7章 输入输出处理.
第3章 流与Java中的文件操作 孙焘.
在PHP和MYSQL中实现完美的中文显示
第九章 字符串.
Hadoop I/O By ShiChaojie.
Java 第28讲:建立删除文件 主讲教师:李焱 讲师.
1、了解TCP和UPD的特点和区别 2、了解TCP的连接传输数据过程 3、能够用TCP建立数据连接和传输数据
Multithread 多執行緒 I/O Lecturer:楊昌樺.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
Java程序设计 第18章 二进制I/O.
第九章 Java输入输出系统.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第九章 输入/输出流.
1、了解File类的特点和使用方法 2、掌握字节流和字符流的特点 3、能够使用字节流和字符流进行文件的读写和终端操作
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
2018/12/3 面向对象与多线程综合实验-输入输出流 教师:段鹏飞.
第七章 输入/输出 标准输入输出 流式I/O基础 文件 随机存取文件 对象输入/输出流.
走进编程 程序的顺序结构(二).
第11章 Java数据流 [内容提要] 大部分程序都需要数据的输入和输出, 从键盘读取数据, 向文件写入数据或从文件获取数据,
第10章 输入与输出 本章要点 10.1 输入与输出基础 10.2 文件输入/输出 思考与练习10
Java语言程序设计 第九部分 输入/输出.
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
2019/1/13 面向对象与多线程综合实验-输入输出流 教师:段鹏飞.
逆向工程-汇编语言
第7章 目录和文件操作 王德俊 上海交通大学继续教育学院.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
DevDays ’99 The aim of this mission is knowledge..
第五讲 JSP中的文件操作(1) 教学目的 本讲主要讲述JSP中使用Java输入、输出流实现文件的读写 操作 。 知识要点
4.2通讯服务模块线程之间传递信息 信息工程系 向模军 Tel: QQ:
Java语言程序设计 清华大学出版社 第8章 输入输出流(1).
5.3 简单的tcp通讯 信息工程系 向模军 Tel: QQ:
SOA – Experiment 2: Query Classification Web Service
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
DQMClientDim.cxx及双光子练习
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
Lab17 程序设计B班
iSIGHT 基本培训 使用 Excel的栅栏问题
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Visual Basic程序设计 第13章 访问数据库
第6章 Java输入输出流与文件操作.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
Python 环境搭建 基于Anaconda和VSCode.
_08文件操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
Google的云计算 分布式锁服务Chubby.
阻塞式模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
9 输入输出及文件操作.
Presentation transcript:

5.4 利用tcp实现文件传输 信息工程系 向模军 Tel: Email: QQ: 13684285460 xmj.cn@163.com 156638267

1 任务引入 在基于UDP的通讯模式中,通讯双方有时需要可靠的通讯(例如:文件传输)。由于UDP协议不保证通讯可靠性,因此在要求保障通讯可靠性的应用中,采用TCP协议。 TCP协议的通讯模式是客户/服务方式。服务端打开一个TCP端口监听连接,客户端与服务端建立TCP连接,并在连接期间传输文件名称及文件内容信息。 2/16

2 任务讨论 定义客户端和服务端在传输文件时的“通讯协议”,使得服务端获知通讯流中哪一些是文件信息,哪一些是文件内容。 3/16

3 I/O流概述 大部分程序都需要输入/输出处理,比如从键盘读取数据、向屏幕中输出数据、从文件中读或者向文件中写数据、在一个网络连接上进行读写操作等。在Java中,把这些不同类型的输入、输出源抽象为流(Stream),而其中输入或输出的数据则称为数据流(Data Stream),用统一的接口来表示,从而使程序设计简单明了。 4/16

3 字节流 字节流基本类 Java中每一种字节流的基本功能依赖于基本类InputStream和OutputStream,它们是抽象类,不能直接使用。 属于InputStream类的方法有: read():从流中读入数据 skip():跳过流中若干字节数 available():返回流中可用字节数 mark():在流中标记一个位置 reset():返回标记过的位置 markSupport():是否支持标记和复位操作 close():关闭流 属于OutputStream类的方法有: write(int b):将一个整数输出到流中(只输出低位字节,为抽象方法) write(byte b[]):将字节数组中的数据输出到流中 write(byte b[], int off, int len):将数组b中从off指定的位置开始,长度为len的数据输出到流中 flush():刷空输出流,并将缓冲区中的数据强制送出 close():关闭流 5/16

3 字节流 文件流 在I/O处理中,最常见的就是对文件的操作。java.io包中所提供的文件操作类包括: File、FileDescriptor描述本地文件系统中的文件或目录 FilenameFilter:接口,主要用于实现文件名查找模式的匹配。 RandomAccessFile:提供对本地文件系统中文件的随机访问支持。 FileInputStream、FileOutputStream用于读写本地文件系统中的文件 FileInputStream类用来打开一个输入文件,若要打开的文件不存在,则会产生例外FileNotFoundException,这是一个非运行时例外,必须捕获或声明抛弃; FileOutputStream类用来打开一个输出文件,若要打开的文件不存在,则会创建一个新的文件,否则原文件的内容会被新写入的内容所覆盖。 在进行文件的读/写操作时,会产生非运行时例外IOException,必须捕获或声明抛弃(其它的输入/输出流处理时也同样需要进行输入/输出例外处理)。 6/16

3 字节流 过滤流 java.io中提供类FilterInputStream和FilterOutputStream分别对其他输入/输出流进行特殊处理,它们在读/写数据的同时可以对数据进行特殊处理。另外还提供了同步机制,使得某一时刻只有一个线程可以访问一个输入/输出流。 7/16

3 字节流 缓冲流 类BufferedInputStream和BufferedOutputStream实现了带缓冲的过滤流,它提供了缓冲机制,把任意的I/O流“捆绑”到缓冲流上,可以提高该I/O流的读取效率。 8/16

3 字节流 数据流 接口DataInput和DataOutput,设计了一种较为高级的数据输入输出方式:除了可处理字节和字节数组外,还可以处理int、float、boolean等基本数据类型,这些数据在文件中的表示方式和它们在内存中的一样,无须转换,如read(), readInt(), readByte() …;write(), writeChar(), writeBoolean()…。此外,还可以用readLine()方法读取一行信息。 数据流类 DataInputStream和DataOutputStream的处理对象除了是字节或字节数组外,还可以实现对文件的不同数据类型的读写,分别实现了DataInput和DataOutput接口。在提供了字节流的读写手段的同时,以统一的通用的形式向输入流中写入boolean,int,long,double等基本数据类型,并可以在次把基本数据类型的值读取回来。提供了字符串读写的手段。 9/16

3 字符流 同类InputStream和OutputStream一样,Reader和Writer也是抽象类,只提供了一系列用于字符流处理的接口。它们的方法与类InputStream和OutputStream类似,只不过其中的参数换成字符或字符数组。 基类:Reader主要方法 void close() void mark(int readAheadLimit) boolean markSupported() : int read() int read(char[] cbuf) int read(char[] cbuf, int off, int len) boolean ready() void reset() long skip(long n) 基类 :Writer主要方法 void close() void flush() void write(char[] cbuf) void write(char[] cbuf, int off, int len) void write(int c) void write(String str) void write(String str, int off, int len) 10/16

3 文件操作/随机访问文件 文件操作主要涉及的类包括: File:以文件路径名的形式代表一个文件 FileDescriptor:代表一个打开文件的文件描述 FileFilter & FilenameFilter:用于列出满足条件的文件 FileInputStream & FileReader:顺序读文件 FileOutputStream & FileWriter:顺序写文件 RandomAccessFile:提供对文件的随机访问支持。 11/16

4 任务实施 在JBuilder中新建项目。在项目中建立以下2个包(服务器端,客户端)。 服务器端: “连接监听”tcpServer类(线程),在指定地址、端口监听客户端的连接请求,并创建Socket套接口,创建、启动tcpreceive线程 。 “文件接收服务 ” tcpreceive类(线程),利用Socket套接口,负责接收文件,完成客户、服务端之间的文件传输,在传输文件前,与客户端协商获取文件名称,文件长度信息,最后传输文件内容。 “服务端主程序”mainThread类,负责启动和停止tcpServer线程。 客户端: “客户端文件传输 ” tcpfiletransmit类(线程),负责创建到指定地址、端口的Socket,并通过Socket发送指定的文件 。 “客户端主控程序” mainThread类,启动tcpfiletransmit线程 。 12/16

5 任务点评 客户端在正式发送文件前,应向服务端正确发送文件名称,文件长度信息,否则服务端无法正确接收文件。 客户端通过缓冲区在读文件的同时,发送缓存区数据,反复直到文件结尾。 服务端通过缓冲区在接收数据的同时,将缓冲区数据写入到文件中,直到接收到指定长度的信息。 13/16

6 试一试 练一练 改写项目,利用两个Socket,一个用于交换文件信息和控制传输,另一个用于传输文件内容。 14/16

7 课外拓展 分析FTP工作原理。 15/16

Thank You !