近日写程序,使用 apache common net 里的 FTPClient,往 FTP 服务器上,上传文件,以至失败。纠结了两三天,不能解决。
后上网 google 搜索,发现以下网址提到着这件事情:
Java 7 prevents FTP transfers on Windows Vista and 7 if firewall is on. Any ideas?
http://stackoverflow.com/questions/6990663/java-7-prevents-ftp-transfers-on-windows-vista-and-7-if-firewall-is-on-any-idea
里面提到,这是 java 的一个 bug(Submit Date, 11-AUG-2011 ):
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7077696
但是 Sun 公司标注这是一个低级别的 bug。
具体原因是:在安装有 IPv6 和 IPv4 的计算机上,会使用一种 IPv6 模拟的 IPv4(The only difference between JDK7 and older releases is that the JDK is using IPv6 sockets when IPv6 is enabled and so IPv4-mapped IPv6 addresses are used),而 windows 防火墙会把这种模拟的 IPv4 数据挡住。
我很奇怪,它只挡住了 FTP 命令 PASV, 对于FTP 登录操作什么的,没有挡住。
最后,Sun 公司给出解决方法:加一个 JVM 启动参数:
run with -Djava.net.preferIPv4Stack=true (which disables IPv6 and uses AF_INET sockets exclusively)
更多信息请查看 java进阶网 http://www.javady.com/index.php/category/thread
分享到:
相关推荐
### Java下载FTP文件 在实际应用开发中,经常需要与FTP服务器进行交互,比如上传文件、下载文件等操作。Java提供了一套强大的工具和API来实现这些功能。下面我们将通过一个具体的示例来了解如何用Java实现从FTP...
下面是一个简单的FTP文件上传的步骤: 1. **创建FTPClient对象**:`FTPClient ftp = new FTPClient();` 2. **连接到FTP服务器**:`ftp.connect(server, port);` 需要指定服务器的IP地址(server)和端口号(port...
Java 实现简单的FTP文件下载是入门级编程者学习网络编程时常常接触的一个实践项目。FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议,它允许用户从远程服务器上下载或上传文件。在这个项目...
本篇文章将深入探讨如何使用Java实现FTP文件传输,包括客户端和服务端的构建。 首先,我们需要理解FTP的基本工作原理。FTP基于TCP/IP协议,通过建立两个独立的连接来完成文件传输:控制连接用于发送命令和接收响应...
### Java删除FTP文件知识点 #### 一、概述 在企业级应用开发中,FTP(File Transfer Protocol)协议常被用于文件传输与管理。利用Java语言编写FTP客户端程序,可以实现文件上传、下载、删除等操作。本文将详细介绍...
在Java编程环境中,将文件上传至FTP(File Transfer Protocol)服务器是一项常见的任务,特别是在Web应用程序...了解上述基本步骤后,你就能构建一个功能完备的Java FTP客户端,用于上传和下载文件,以及进行日常管理。
2. **FTP命令**:通过`java.net.Socket`发送FTP命令,如`USER`、`PASS`用于登录,`CWD`改变当前工作目录,`LIST`获取目录列表,`STOR`上传文件,`RETR`下载文件等。 3. **FTP会话管理**:在FTP会话中,你需要管理...
在这个“java FTP客户端程序”中,我们可以深入探讨如何使用Java来编写一个FTP客户端,以及涉及到的相关知识点。 首先,我们需要了解Java中的`java.net`和`java.io`这两个核心库,它们是实现FTP客户端的基础。`java...
6. 构建 FTP 服务器:一个简单的 Java FTP 服务器通常包括以下组件: - `FtpServer` 类:负责初始化 `ServerSocket` 并监听客户端连接。它可以设置 FTP 服务器的根目录,监听的端口号通常是 21。 - `FtpConnection...
主动模式中,客户端指定一个端口等待服务器连接,而被动模式则是服务器开启一个新的端口并告知客户端连接,以避免防火墙问题。 在Java中,Apache Commons Net库是常用的FTP客户端实现。首先,你需要将该库引入到...
本文将详细介绍如何使用Java实现FTP的上传和下载功能,并结合提供的资源——"WinFtp Server2.0.1特别汉化版",为你提供一个实践环境。 首先,Java中实现FTP功能主要依赖于`java.net`和`java.io`这两个核心库,但...
总之,这个“ftp上传功能java完整代码包”提供了一个完整的解决方案,可以帮助开发者快速地在Java应用中实现FTP文件上传功能。无论是学习FTP协议、Java网络编程,还是实际开发中需要此功能,这个代码包都具有很高的...
Java编写的FTPClient是用于与...总之,Java中的FTPClient提供了丰富的功能,可以满足大多数FTP文件传输需求。开发时,注意选择合适的传输模式,正确处理错误,以及在操作完成后释放资源,以确保程序的稳定性和安全性。
控制连接用于发送FTP命令和接收响应,而数据连接则用于实际的数据传输。 在Java中,我们可以使用`java.net.Socket`和`java.net.ServerSocket`类来创建和管理这两个连接。然而,这需要对FTP协议有深入的理解,因此更...
7. **异常处理**:在开发FTP客户端时,必须考虑网络错误、认证失败和其他可能出现的问题,并妥善处理这些异常。 8. **多线程编程**:为了提高性能,客户端可能需要并发处理多个文件的上传或下载。这时,可以使用...
Java 实现FTP客户端是网络编程中的一个重要话题,FTP(File Transfer Protocol)协议是用于在网络上进行文件传输的标准协议。本文将详细介绍如何使用Java语言来构建一个基本的FTP客户端,实现文件的下载和上传功能。...
2. **FTP命令**:Java FTP客户端通过发送FTP命令来执行不同的操作,如`USER`和`PASS`用于认证,`CWD`改变工作目录,`LIST`获取目录内容,`GET`和`PUT`用于文件传输,`DELE`和`RMD`用于删除文件和目录。 3. **主动...
FTP 上传是指将本地计算机上的文件发送到远程 FTP 服务器的过程。在 Java 中,我们可以通过 `FTPClient` 类提供的方法来实现这一功能。 ##### 代码实现 ```java public static String uploadFile(Sessions session...
FTP操作可能会遇到各种问题,如连接失败、认证错误、文件不存在等。因此,良好的异常处理机制是必不可少的,确保程序的健壮性。 6. **文件I/O操作**: 在上传和下载文件时,需要使用Java的`java.io`包,如`...