0 0

java通过ftp(ssl) 连接ftp服务器成功,怎么list文件 30

已知ftp服务器为: unix系统 ,

连接 : ftp  ssl ,

implicit  

通过 username/password 登陆.

ftp根目录下有个文件夹maibox , 用程序实现对其中一个文件下的文件 读取操作.

 

 

一 ,ftp 被动模式(PASV)下连接过程:

1. 客户端首先要用PASV命令告诉服务器,准备传数据了
2.
服务端收到PASV后,在本地listen一个端口,并返回2xx 正确相应信息 + listen的端口
3.
客户端收到响应后,发送STOR RETR LIST 等告知服务端 它想要的数据
4.
服务端收到命令后,准备相关数据,完毕后发送150 响应△程序已执行到此
5.
客户端收到正确响应后,客户端主动发起一个本地随机端口至服务端listen的端口的 TCP连接, 然后服务器将数据在此TCP连接塞给客户端。怎么用代码实现???
6.
服务端塞数据完毕后,在命令端口中返回2xx 正确响应。
7.
工作结束,关闭4 中建立的临时TCP连接。 命令端口的连接仍然保持,服务端等待客户端命令
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

 

尝试使用@3 方法 实现连接 ?出现问题:

 

程序实现

 

 

 

....

    connectSFTPServer(); //连接server 成功

logger.info("sftpClient.pasv() :..........." + sftpClient.pasv()); //进入pasv 模式

 

       String repAddressInfo = sftpClient.getReplyString(); //获取server 返回的信息

PlatformABNSFTPConnectorTest.extractHostInfo(repAddressInfo); //自定义方法 提取返回信息中的ip 和port 放入变量hostName,   ftpport:

  sftpClient.list(); //列出文件

 

 

 //@2       String[] folderNames = sftpClient.listNames(); //listNames()

 

 

        InetAddress host;

host = InetAddress.getByName(hostName); //sever返回的ip信息和端口 ip,   ftpport:

sftpClient.connect(host, ftpPort); //@3 新建一个tcp连接

 

三 分析

 

  使用的是FTPSClient,包 org.apache.commons.net.ftp.FTPSClient;

可以连接成功,切换目录, 上传文件成功,就是list和下载文件出错,

 

1.尝试使用list(),在控制台报错

 

org.apache.commons.net.MalformedServerReplyException: Could not parse response code.

Server Reply: -r--r--r--   1 ABNNSOUT_ enterprise    1 Nov 25 21:52 

:绿色是服务器端的一个文件,服务器为unix系统, 但报错显示格式错误?查看源代码知解析返回信息读取信息时发生NumberformatException引起的.

 

 

 

2.通过listNames()  见代码@2

报错: java.net.SocketException: Connection reset

...无法解决

 

 

有没有高手写过类似功能, 希望能给予指点?

qq:35698406  msn:qdpurple@msn.cn

 

 

 


 


问题补充:回答你什么 ?<div class="quote_title">liuyuantp 写道</div><div class="quote_div">你先回答我的,我再回答你的。</div> <br />

问题补充:什么意思? uote="躁动的绵羊"]我来搭建有的 <br />

问题补充:关于FTPSClient 类的list返回为null今天问题终于解决了: <br />上网查阅了这些问题答案,没有一种能解决的 .最后通过在list方法之前调用了 <br /> <br />SocketFactory factory = SSLSocketFactory.getDefault(); <br />sftpClient.setSocketFactory(factory); <br />然后listFiles(). <br />文件解决. <br />分析: <br />ftp pasv模式连接过程 FtpClient类已进行了底层封装,程序只需调用 connect()成功后调用list()或listFiles()即可访问服务器的文件. <br />(1)上面通过@3 重新调用connect()连接返回的ip 和 port 是错误的. <br />(2)为什么调用此方法后 就可以list文件了? <br />初步分析:sftpclient(FTPSClient)连接方法是调用父类(FTPClient)方法,而其本身使用的ssl加密的相关方法在父类中并没有被实现,此方法(setSocketFactory)作用是调用设置了生成此类的工厂为SSLSocketFactory,进而实现ssl的相关功能. <br /> <br /> <br />
2010年12月24日 17:54

2个答案 按时间排序 按投票排序

0 0

我来搭建有的

2010年12月25日 10:57
0 0

你先回答我的,我再回答你的。

2010年12月24日 18:17

相关推荐

    java定时从ftp服务器更新相关文件

    Java定时从FTP服务器更新相关文件是一项常见的任务,特别是在自动化数据同步和备份的场景中。这里主要涉及的技术点包括FTP协议、Java编程以及文件系统操作。本文将深入探讨这些知识点,并提供一个基于`ftp4j`库的...

    java 读取FTP服务器文件

    在Java编程环境中,读取FTP(File Transfer Protocol)服务器上的文件是一项常见的任务,尤其是在Web服务器和Linux系统环境下。FTP提供了一种可靠的方式来传输文件,使得应用程序可以远程访问和操作存储在FTP服务器...

    用Java实现FTP服务器 .rar_FTP服务器_ftp_java ftp_java ftp 服务器_java ftp服务器

    主动模式中,客户端打开一个端口等待服务器连接;被动模式中,服务器打开一个端口等待客户端连接。服务器需要支持这两种模式。 9. **错误处理和异常处理**:在处理FTP请求时,需要捕获并处理可能出现的异常,如网络...

    JAVA实现FTP协议中的服务器和客户端\\

    因此,我们需要使用第三方库或Java内置的`javax.net.ssl.SSLSocket`(用于加密的FTP,即FTPS)来构建FTP客户端和服务器。 对于Java实现FTP服务器,我们可以使用Apache的Commons Net库。这个库提供了一个`FTPServer`...

    java 实现ftp 服务器

    Java 实现FTP服务器是一项常见的编程任务,这通常涉及到网络编程和文件传输协议的理解。FTP(File Transfer Protocol)是一种用于在互联网上传输文件的标准协议。在Java中实现FTP服务器,我们可以利用Java的内置类库...

    java实现ftp服务器端配套程序

    Java实现FTP服务器端配套程序是一种将Java编程语言用于构建文件传输协议(FTP)服务端的应用。FTP是一种在互联网上广泛使用的标准协议,用于在客户端和服务器之间上传、下载文件。在Java中,我们可以利用标准库中的`...

    java搭建ftp服务器

    Java 搭建 FTP 服务器涉及的关键知识点包括 FTP 协议、TCP 连接、FTP 响应码、多线程以及 Java 网络编程。以下是对这些知识点的详细说明: 1. FTP 协议:FTP(File Transfer Protocol)是一种用于在互联网上进行...

    java语言实现ftp服务器.rar_ftp_ftp 服务器_ftp 服务器实现_java ftp 服务器_服务器

    Java语言实现FTP服务器涉及到多个关键知识点,包括FTP协议的理解、Socket编程、多线程处理以及文件I/O操作等。以下是对这些知识点的详细说明: 1. FTP(File Transfer Protocol)协议: FTP是一种用于在网络上进行...

    FTP服务器 java

    8. **安全性考虑**:在实际应用中,FTP服务器应考虑安全因素,如使用SSL/TLS加密连接,或者集成更安全的SFTP(SSH File Transfer Protocol)协议。 9. **报告和使用说明**:在课设中,可能还需要编写报告来阐述设计...

    FTP.rar_FTP服务器_FTP服务器程序_ftp server service_ftp 服务器_ftp文件服务器

    FTP文件服务器则强调了其主要功能是存储和分发文件,用户可以使用FTP客户端来访问这些文件。 在描述中提到的功能: 1. **登录FTP服务器**:用户通过FTP客户端输入服务器地址、用户名和密码,建立安全的连接。FTP...

    c++实现ftp list所有文件与目录 & ftp down所有文件

    总结来说,通过C++和libcurl库,我们可以有效地遍历FTP服务器的目录结构,并下载所有文件。这个过程涉及到网络编程、文件操作以及数据解析等多个方面的知识,对于任何想深入理解FTP协议和C++网络编程的人来说,都是...

    ftp从服务器上传下载文件

    在Java中,首先需要创建一个`FTPClient`对象,然后通过调用`connect(String server, int port)`方法连接到FTP服务器。默认端口是21,但可以自定义。 3. **登录验证**: 连接成功后,使用`login(String username, ...

    Java实现ftp文件传输

    此外,安全性是FTP服务端设计的重要一环,应考虑使用SSL/TLS加密连接,或者采用更安全的SFTP(SSH文件传输协议)。 在提供的压缩包文件中,可能包含了示例代码,用于演示如何使用Java实现FTP客户端和服务端。通过...

    FTP.rar_FTP服务器程序_ftp_ftp java_ftp上传下载_java ftp

    2. **VBSOCK.BAS** 和 **Winsock.bas**:这两者可能涉及到Winsock库的实现,Winsock是Windows操作系统中的网络编程接口,用于处理TCP/IP协议,FTP服务器通过它来建立和管理与客户端的连接。 3. **Profiles.bas**:...

    java实现ftp客户端服务器

    Java实现FTP客户端与服务器是网络编程中的一个重要环节,FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议。本文将详细讲解如何使用Java语言来构建FTP客户端和服务器,并重点介绍核心概念和...

    FTP 文件传输 基于JAVA的网络编程

    一旦建立连接,服务器需要读取客户端发送的FTP命令,如`USER`、`PASS`进行身份验证,`CWD`改变当前工作目录,`LIST`获取目录列表,`STOR`和`RETR`用于文件上传和下载。Sun.net包中的`FtpServer`类或第三方库如Apache...

    JAVA FTP 文件传输 服务端 客户端

    1. **Java FTPClient库**: 如Apache Commons Net中的`FTPClient`类,提供了丰富的API来实现FTP客户端功能,如连接服务器、登录、上传/下载文件、断点续传等。 2. **连接管理**: 客户端需要正确管理FTP连接,包括...

    ftp.zip_FTP客户 服务_ftp客户端 服务_ftp服务端_java ftp服务器

    通过这个示例,开发者可以学习如何创建一个自定义的FTP服务器,理解如何处理连接、认证、文件操作等核心任务。 在学习和实践中,你将接触到以下关键知识点: - FTP协议的基本概念和操作指令,如USER/PASS(用户...

    FTP客户端Java类库 ftp4j

    1. **连接与断开**:`FtpClient`类是ftp4j的核心,通过`connect()`方法建立与FTP服务器的连接,`disconnect()`方法则断开连接。它支持主动和被动模式,以及TLS/SSL安全连接。 2. **登录与注销**:使用`login()`和`...

    Java实现的FTP连接与数据浏览程序

    Java实现的FTP(File Transfer Protocol)连接与数据浏览程序是一个基于Java编程语言的软件应用,它允许用户通过网络连接到FTP服务器,进行文件传输、目录浏览等操作。FTP是互联网上广泛使用的文件交换协议,而Java...

Global site tag (gtag.js) - Google Analytics