已知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
...无法解决
分享到:
相关推荐
在Java编程环境中,读取FTP(File Transfer Protocol)服务器上的文件是一项常见的任务,尤其是在Web服务器和Linux系统环境下。FTP提供了一种可靠的方式来传输文件,使得应用程序可以远程访问和操作存储在FTP服务器...
Java定时从FTP服务器更新相关文件是一项常见的任务,特别是在自动化数据同步和备份的场景中。这里主要涉及的技术点包括FTP协议、Java编程以及文件系统操作。本文将深入探讨这些知识点,并提供一个基于`ftp4j`库的...
3. 发送FTP命令,如`USER`、`PASS`进行身份验证,`CWD`改变工作目录,`LIST`列出目录内容,`RETR`下载文件,`STOR`上传文件等。 4. 解析服务器返回的响应码,根据响应码执行相应的操作。 5. 使用输入流读取服务器...
一旦建立连接,服务器需要读取客户端发送的FTP命令,如`USER`、`PASS`进行身份验证,`CWD`改变当前工作目录,`LIST`获取目录列表,`STOR`和`RETR`用于文件上传和下载。Sun.net包中的`FtpServer`类或第三方库如Apache...
FTP文件管理管理模块在Java中的实现涉及到多个关键知识点,涵盖了网络通信、文件处理以及多线程编程。以下是对这些知识点的详细阐述: 1. FTP(File Transfer Protocol)协议:FTP是一种用于在网络上进行文件传输的...
通过以上知识点,我们可以构建一个功能完备的Java FTP客户端,实现文件的上传、下载以及目录管理等功能,满足日常的文件传输需求。在开发过程中,要注重代码的可读性、可维护性和安全性,以适应不同的使用场景。
在《Java开发典型模块大全》这本书中,这个FTP文件管理程序可能包含了以上所有功能的示例代码,通过阅读和学习这些代码,你可以深入理解如何在实际项目中应用FTP协议和Java网络编程技术。此外,还可以学习到异常处理...
在Java编程语言中,可以通过实现FTP客户端来实现文件的上传、下载和其他相关操作。本资料包提供了一个简单的FTP Java源代码示例,帮助开发者理解和应用FTP文件传输。 在Java中,通常使用`java.net`和`java.io`库来...
本文将详细讲解如何使用Java实现FTP自动上传整个磁盘的文件,包括目录结构,并介绍如何通过JTextArea展示Log4j日志信息以及命令行交互。 首先,我们需要一个第三方库来处理FTP通信。在Java中,Apache Commons Net库...
3. **命令交互**:FTP使用一系列命令来控制文件传输,如`LIST`列出目录,`RETR`获取文件,`STOR`存储文件,`CWD`改变当前工作目录等。 4. **数据传输**:FTP传输文件时,可以采用ASCII或二进制模式。ASCII模式适用...
此外,还需要考虑如何处理文件系统操作,如读取和写入文件,以及错误处理和安全性问题,例如使用 SSL/TLS 加密连接。对于更复杂的场景,可能还需要支持 PASV 模式以允许客户端选择数据连接的端口,以及支持断点续传...
`javaftp.txt`可能是具体的FTP源码示例,你可以通过阅读和分析这个文件来了解FTP客户端的实现细节。 总的来说,理解和实现Java FTP需要对网络通信、文件I/O和异常处理有深入的理解,同时,熟悉FTP协议和使用相应的...
2. **FTP命令**:Java FTP客户端通过`java.net.Socket`发送FTP命令,如`USER`(提供用户名)、`PASS`(提供密码)进行身份验证,`CWD`(改变工作目录),`LIST`(列出目录内容),`RETR`(下载文件),`STOR`(上传...
总之,Java FTP文件传输涉及到服务端的构建和客户端的实现,两者都需要理解FTP协议的工作原理和Java相关的库。通过合理地利用Apache Commons Net等库,我们可以方便地实现FTP功能,满足文件的上传、下载和管理需求。...
Java FTP库通常提供了许多方便的方法来执行FTP操作,如连接到服务器、登录、上传文件、下载文件、改变目录等。在提供的"ftp-rfc959.rar"压缩包中,包含的源代码可能就是实现了这些功能的Java程序。这些源代码已经...
Java 实现FTP服务器是一项常见的编程任务,这通常涉及到网络编程和文件传输协议的理解。FTP(File Transfer Protocol)是一种用于在互联网上传输文件的标准协议。在Java中实现FTP服务器,我们可以利用Java的内置类库...
3. **目录操作**:`ftp4j`提供了`changeWorkingDirectory()`用于切换当前工作目录,`printWorkingDirectory()`获取当前目录,以及`listDirectories()`和`listFiles()`获取目录列表和文件列表。 4. **文件上传与下载...
FTP(File Transfer Protocol)是一种基于TCP/IP协议的网络协议,用于在网络上进行文件...通过分析Ftp.java源代码,可以深入了解FTP客户端的实现细节,如如何建立连接、发送命令、处理响应以及实现文件的上传和下载。
标题中的“用Java实现FTP...通过学习以上知识点,开发者可以创建一个功能齐全、安全可靠的Java FTP服务器。不过,实际开发时还需要熟悉FTP协议的详细规范,理解各种命令的交互流程,以及如何有效地管理服务器资源。
开发者可能已经封装了FTP的相关逻辑,使得用户可以通过简单的Java代码来连接FTP服务器,上传、下载或管理文件。 FTP在Java中的实现主要依赖于`java.net`和`java.io`等标准库,以及`javax.net.ssl`库(如果需要使用...