《Java网络编程技术》PPT课件.ppt_第1页
《Java网络编程技术》PPT课件.ppt_第2页
《Java网络编程技术》PPT课件.ppt_第3页
《Java网络编程技术》PPT课件.ppt_第4页
《Java网络编程技术》PPT课件.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、第6章 Java FTP 协议网络编程,2,FTP是TCP/IP协议组中的协议之一,是英文FileTransferProtocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。,6.1 FT

2、P 协议,3,6.2FTP服务器和客户端,同大多数 Internet服务一样,FTP也是一个客户/服务器系统。用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。依照FTP协议提供服务,进行文件传送的计算机就是FTP服务器,而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。用户要连上FTP服务器,就要用到FPT的客户端软件,通常Windows自带“ftp”命令,这是一个命令行的FTP客户程序,另外常用的FTP客户程序还有 CuteFTP、Ws_FTP、Flashfxp、LeapFTP、流星雨-猫眼等。,4,6.3 FTP 协议应用,通过FTP应用程序可以在Int

3、ernet上实现远程文件传输 文件下载:从远程主机本地计算机 文件上传:从本地计算机远程主机,5,6.4 FTP命令的使用,常用的FTP命令 ftp rename 将远程主机上的文件改名 ftp cd 改变工作目录 ftp mkdir 在远程主机创建子目录 ftp binary 指定以二进制方式传送 ftp ascii 指定以ASCII方式传送 ftp ! 在不断线的情况下,执行本地命令 ftp pwd 查阅远程主机的当前目录 ftp quit 结束联机,关闭所有已打开的连接 ftp help 显示帮助信息,6,1、登录FTP服务器 方法一:输入命令 ftp host 其中host是FTP服务

4、器的域名或IP地址。如: C:ftp 启动FTP后,命令提示符变为ftp 方法二:先输入命令 ftp 启动FTP,再用命令 open host 登录服务器。如: C:ftp C:open 登录时先是显示一些欢迎信息,然后会要求输入用户名和密码,比如匿名登录服务器: C:ftp User:anonymous 331 User name okay,please send complete E-mail address as password Password: 230 User logged in,proceed ftp 注意:在输入密码时,屏幕没有任何显示,但已经输入了,不要认为出错。登录成功后

5、就可以访问FTP服务器上的文件了。 如果由于用户名或密码错误导致登录失败,可以用user命令重新登录。,7,2、查看FTP服务器上的文件 dir 命令:显示目录和文件列表。 ls 命令:显示简易的文件列表。 cd 命令:进入指定的目录。 dir命令可以使用通配符“*”和“?”,比如,显示当前目录中所有扩展名为jpg的文件,可使用命令 dir *.jpg。 cd命令中必须带目录名。比如 cd main 表示进入当前目录下的main子目录,cd . 表示退回上一级子目录。,8,3、下载文件 上传和下载文件时应该使用正确的传输类型,FTP的传输类型分为ASCII码方式和二进制方式两种,对.txt、.

6、htm等文件应采用ASCII码方式传输,对.exe或图片、视频、音频等文件应采用二进制方式传输。在默认情况下,FTP为ASCII码传输方式。 type 命令:查看当前的传输方式。 ascii 命令:设定传输方式为ASCII码方式。 binary 命令:设定传输方式为二进制方式。 以上命令都不带参数。 get 命令:下载指定文件。 get命令的格式:get filename newname,filename为下载的FTP服务器上的文件名,newname为保存在本地计算机上时使用的名字,如果不指定newname,文件将以原名保存。 get命令下载的文件将保存在本地计算机的工作目录下。该目录是启动F

7、TP时在盘符C:后显示的目录。如果想修改本地计算机的工作目录,可以使用 lcd 命令。比如:lcd d: 表示将工作目录设定为D盘的根目录。 mget 命令:下载多个文件。 mget命令的格式:mget filename filename 。 mget命令支持通配符“*”和“?”,比如:mget *.mp3 表示下载FTP服务器当前目录下的所有扩展名为mp3的文件。,9,4、上传文件 put 命令:上传指定文件。 put命令的格式:put filename newname,filename为上传的本地文件名,newname为上传至FTP服务器上时使用的名字,如果不指定newname,文件将以原

8、名上传。 上传文件前,应该根据文件的类型设置传输方式,本机的工作目录也应该设置为上传文件所在的目录。 5、结束并退出FTP close 命令:结束与服务器的FTP会话。 quit 命令:结束与服务器的FTP会话并退出FTP环境。,10,6、其它FTP命令 pwd 命令:查看FTP服务器上的当前工作目录。 rename filename newfilename 命令:重命名FTP服务器上的文件。 delete filename 命令:删除FTP服务器上的文件。 help cmd 命令:显示FTP命令的帮助信息,cmd是命令名,如果不带参数,则显示所有FTP命令。,11,6.5. FTP的传输模式

9、,FTP 协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过 ftp协议对话,并且能访问Internet, 你可以用ftp命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。 FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式。,12,ASCII传输方式,假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式。 但是常常有这样的情况

10、,用户正在传输的文件包含的不是文本文件,它们可能是程序,数据库,字处理文件或者压缩文件(尽管字处理文件包含的大部分是文本,其中也包含有指示页尺寸,字库等信息的非打印字符)。在拷贝任何非文本文件之前,用binary 命令告诉ftp逐字拷贝,不要对这些文件进行处理,这也是下面要讲的二进制传输。,13,二进制传输模式,在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。 如果你在ASCII方式下传输二进制文件,即使不需要也仍会转译。这会使传输

11、稍微变慢 ,也会损坏数据,使文件变得不能用。(在大多数计算机上,ASCII 方式一般假设每一字符的第一有效位无意义,因为ASCII字符组合不使用它。如果你传输二进制文件,所有的位都是重要的。)如果你知道这两台机器是同样的,则二进制方式对文本文件和数据文件都是有效的。,14,6.6 Java FTP 协议网络编程,1.用Java 类库 2.用第3方类库,15,Java FTP类库,类:FtpClient 包:.ftp.*;,16,Java 第3方FTP类库,JScape, iNet Factory: com.jscape.inet.ftp.Ftp /n software, IP*Works: i

12、pworks.Ftp Enterprise Distributed Technologies, Java FTP Client Library: .ftp.FTPClient IBM alphaWorks, FTP Bean Suite: tocol.FTPProtocol SourceForge, JFtp: .FtpConnection The Jakarta Project, Jakarta Commons/Net: .ftp.FTPClient JavaShop JNetBeans: jshop.jnet.FTPClient Florent Cueto, Jav

13、aFTP API: com.cqs.ftp.FTP Bea Petrovicova, jFTP: cz.dhl.ftp.Ftp The Globus Project, Java CoG Kit: org.globus.io.ftp.FTPClient,17,6.7 Java FTP API,.ftp.FtpClient .NetworkClient .TelnetInputStream .TelnetOutputStream .ftp.FtpInputStream .TransferProtocolClient,18,.ftp.FtpClient类,.Socket | +- .NetworkC

14、lient | +- .TransferProtocolClient | +- .ftp.FtpClient,19,FtpClient构造方法有: public FtpClient() public FtpClient(String host) throws IOException public FtpClient(String host, int port) throws IOException,20,FtpClient主要方法 public void login(String login, String password) throws IOException public TelnetI

15、nputStream get(String filename) throws IOException public TelnetOutputStream put(String filename) throws IOException public TelnetInputStream list() throws IOException public void cd(String path) throws IOException public void ascii() throws IOException public void binary() throws IOException public

16、 void closeServer() throws IOException,21,Java FTP 工作流程,22,Java API与 FTP命令对照: .ftpFTP指令 loginUSER PASS getRETR putSTOR listLIST cdCWD asciiTYPE A binaryTYPE I closeServerQUIT,23,Java FTP 客户端编程程序例,import java.io.*; import java.util.*; import .*; import .ftp.FtpClient; public class FtpUtil FtpClient f

17、tpClient; public void connectServer(String server, String user, String password, String path) throws IOException ftpClient = new FtpClient(); ftpClient.openServer(server); ftpClient.login(user, password); if (path.length() != 0) ftpClient.cd(path); ftpClient.binary(); ,24,public long upload(String f

18、ilename, String newname) throws Exception long result = 0; / ftp输出流 TelnetOutputStream os = null; FileInputStream is = null; try java.io.File file_in = new java.io.File(filename); if (!file_in.exists() return -1; if (file_in.length() = 0) return -2; os = ftpClient.put(newname); result = file_in.leng

19、th(); is = new FileInputStream(file_in); byte bytes = new byte1024; int c; while (c = is.read(bytes) != -1) os.write(bytes, 0, c); finally if (is != null) is.close(); if (os != null) os.close(); return result; ,25,public long upload(String filename) throws Exception String newname = ; if (filename.i

20、ndexOf(/) -1) newname = filename.substring(filename.lastIndexOf(/) + 1); else newname = filename; return upload(filename, newname); public long download(String filename, String newfilename) throws Exception long result = 0; TelnetInputStream is = null; FileOutputStream os = null; try is = ftpClient.

21、get(filename); java.io.File outfile = new java.io.File(newfilename); os = new FileOutputStream(outfile); byte bytes = new byte1024; int c;,26,while (c = is.read(bytes) != -1) os.write(bytes, 0, c); result = result + c; catch (IOException e) e.printStackTrace(); finally if (is != null) is.close(); if

22、 (os != null) os.close(); return result; public List getFileList(String path) List list = new ArrayList(); try DataInputStream dis = new DataInputStream(ftpCList(path); String filename = ; while (filename = dis.readLine() != null) list.add(filename); catch (Exception e) e.printStackTrace()

23、; return list; ,27,public void closeServer() throws IOException try if (ftpClient != null) ftpClient.closeServer(); catch (IOException e) e.printStackTrace(); public static void main(String args) throws Exception FtpUtil ftp = new FtpUtil(); try ftp.connectServer(0, zlj, zlj,/ODBC); System.out.println(ok1); /ftp.createDir(ddd); System.out.println(ok2); System.out.println(filesize: + ftp.upload(D:/dd.txt) + 字节); Li

温馨提示

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

评论

0/150

提交评论