`

apache的ftpClient.listFiles()为空

阅读更多
客户端连接FTP服务器,执行到ftpClient.listFiles()总是为空,但是同样的代码却可以连接另外一台FTP服务器。连接方式都是被动模式。经跟踪源码发现执行到socket.connect(...)这个方法时就报connection time out。发现这两台FTP服务器是出于不同的网段,其中客户端与一台服务器在同一个网段,得出在跨网段访问时中间存在防火墙,阻隔了客户端连接访问。


PORT中文称为主动模式,工作的原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据。

PASV是Passive的缩写,中文成为被动模式,工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输。
分享到:
评论
2 楼 huiy 2016-02-03  
cheetah747 写道
所以呢?怎么解决?

请网络管理员开放网间端口访问
1 楼 cheetah747 2015-12-14  
所以呢?怎么解决?

相关推荐

    FTPClient.listFiles()获取文件为空的问题.

    ftpClient.changeWorkingDirectory(path); ftpClient.enterLocalPassiveMode(); //由于apache不支持中文语言环境,通过定制类解析中文日期类型 ... FTPFile[] files = ftpClient.listFiles();

    Apache的FTPClient.jar

    6. 获取文件信息:`FTPClient.listFiles(String dir)`返回服务器上指定目录下的文件和目录列表。 7. 保持会话状态:`FTPClient.setFileType(FTP.BINARY_FILE_TYPE)`设置文件传输类型为二进制,适用于大多数文件。...

    FTPClient.

    FTPFile[] files = ftpClient.listFiles(); for (FTPFile file : files) { System.out.println(file.getName()); } ftpClient.makeDirectory("newDirectory"); boolean deleteSuccess = ftpClient.deleteFile(...

    FTP JAVA工具类(连接FTP,上传文件到FTP,删除FTP文件,下载FTP文件,检索FTP文件)

    public List<String> listFiles(String dirPath) { try { ftpClient.changeWorkingDirectory(dirPath); String[] files = ftpClient.listNames(); return Arrays.asList(files); } catch (IOException e) { e...

    Java常用FTP文件操作说明Apache.FTPClient,ftp4j,jftp.pdf

    5. 文件列表获取:使用`FTPFile[] listFiles(String dir)`获取指定目录下的文件列表。 在实际开发中,为了确保文件操作的可靠性和安全性,需要处理各种异常情况,例如网络中断、认证失败、文件不存在等。此外,完成...

    apache java ftpclient

    使用`FTPClient.listNames()`或`FTPClient.listFiles()`方法可以获取远程目录中的文件和子目录列表。 6. **删除文件和目录** 删除文件使用`FTPClient.deleteFile()`方法,而删除目录则需先改变到该目录,然后使用...

    java实现ftp断点续传

    FTPFile[] files = ftpClient.listFiles(remoteFilePath); long fileSize = 0; if (files.length > 0) { FTPFile file = files[0]; fileSize = file.getSize(); } ``` 接着,我们需要创建一个`FTPClient....

    JavaFtpClient.rar_JAVAFTP_ftpclient

    FTPFile[] files = ftpClient.listFiles(); for (FTPFile file : files) { System.out.println(file.getName()); } ``` 完成所有操作后,别忘了关闭连接: ```java ftpClient.logout(); ftpClient.disconnect(); ...

    使用commons.net FTP 和sun.net.ftp.FtpClient 多种方式上传下载(包括批量)删除功能(一)

    `FTPClient.listFiles()`返回服务器目录下的文件和子目录列表。 7. **删除文件**:使用`FTPClient.deleteFile(String filename)`删除指定的远程文件。 8. **断开连接**:完成所有操作后,确保使用`FTPClient....

    利用ftp协议进行文件的上传下载

    在本文中,我们将深入探讨如何利用Apache的FTPClient库在Java环境中实现FTP文件的上传与下载功能,并简要介绍如何设置FTP服务器进行测试。 1. FTP协议基础: FTP基于TCP/IP协议族,提供了双向通信,允许客户端和...

    Apache Commons Net » 3.3 org.apache.commons.net.ftp.FTPClient

    4. **目录操作**:`changeWorkingDirectory(directory)`允许切换当前工作目录,`printWorkingDirectory()`返回当前目录,`listDirectories()`和`listFiles()`则分别用于获取目录和文件列表。 5. **文件和权限管理**...

    Java常用FTP文件操作说明Apache.FTPClient,ftp4j,jftp

    本文将详细讲解三种常用的FTP客户端库——Apache.FTPClient、ftp4j及jftp,并以Apache.FTPClient为例,深入探讨其使用方法。 #### 一、Apache.FTPClient简介 Apache Commons Net是Apache项目下的一个开源工具包,...

    如何在JAVA程序中实现FTP的功能

    FTPFile[] files = ftpClient.listFiles(); for (FTPFile file : files) { System.out.println(file.getName()); } ftpClient.disconnect(); ``` 2)从FTP服务器上下传一个文件 在`getButton_actionPerformed`方法...

    FTP下载文件

    有时,`ftpClient.listFiles()`可能会卡住,但不报错,这可能是由于服务器响应超时或者网络问题。在这种情况下,可以设置超时时间,或者检查网络连接状态: ```java ftpClient.setConnectTimeout(5000); // 设置...

    java ftpClient 工具包代码

    FTPFile[] files = ftpClient.listFiles(remoteDir); for (FTPFile file : files) { if (file.isDirectory()) { File localSubDir = new File(localDir + File.separator + file.getName()); localSubDir.mkdir...

    java FTP服务器文件上传下载,创建多级文件夹.zip

    可以使用`FTPClient`的`listNames()`或`listFiles()`方法获取FTP服务器上的文件和目录列表,然后根据需要进行查找。 在提供的压缩包"java FTP服务器文件上传下载,创建多级文件夹.zip"中,包含了一个可以直接运行的...

    JAVA FTPClient文件操作

    FTPFile[] files = ftpClient.listFiles("remote/directory"); for (FTPFile file : files) { System.out.println(file.getName()); } ``` ### 错误处理 在进行FTP操作时,应捕获并处理可能的异常,如`...

    java通过FtpCilent实现FTP

    - **获取目录列表**:利用`FtpClient.listFiles()`或`FtpClient.listNames()`获取当前目录下的文件和目录列表。 5. **断开连接**:完成所有操作后,确保调用`FtpClient.disconnect()`关闭FTP连接。 `commons-...

    android ftpclient实例

    Apache的ftpclient库为开发者提供了一个强大的工具,它允许我们在Android应用中实现FTP通信。本实例将详细介绍如何使用Apache的ftpclient库在Android环境下构建FTP客户端。 首先,我们需要在项目中添加Apache ...

    Android 利用commons-net-3.3实现ftp上传下载Demo

    1. **获取文件列表**:使用`FTPClient.listFiles()`方法可以获取远程目录下的文件和子目录列表。返回的列表中每个元素都是一个`FTPFile`对象,包含文件或目录的信息。 ```java FTPFile[] files = ftpClient.list...

Global site tag (gtag.js) - Google Analytics