转自
http://www.diybl.com/course/3_program/java/javajs/20100719/453294.html
小心弹出窗口Ad
需要重写几个地方
i. org.apache.commons.net.SocketClient
/** 用来自定义 Passive 模式的 Host */
protected String _set_passive_host = "127.0.0.1";
/**
* Opens a Socket connected to a remote host at the specified port and
* originating from the current host at a system assigned port.
* Before returning, {@link #_connectAction_ _connectAction_() }
* is called to perform connection initialization actions.
* <p>
* @param hostname The name of the remote host.
* @param port The port to connect to on the remote host.
* @exception SocketException If the socket timeout could not be set.
* @exception IOException If the socket could not be opened. In most
* cases you will only want to catch IOException since SocketException is
* derived from it.
* @exception UnknownHostException If the hostname cannot be resolved.
*/
public void connect(String hostname, int port)
throws SocketException, IOException
{
// 将连接的hostname赋给_set_passive_host
_set_passive_host = InetAddress.getByName(hostname).getHostAddress();
_socket_= _socketFactory_.createSocket();
_socket_.connect(new InetSocketAddress(hostname, port), connectTimeout);
_connectAction_();
}
ii. org.apache.commons.net.ftp.FTPClient
private void __parsePassiveModeReply(String reply)
throws MalformedServerReplyException
{
java.util.regex.Matcher m = __parms_pat.matcher(reply);
if (!m.find()) {
throw new MalformedServerReplyException(
"Could not parse passive host information.\nServer Reply: " + reply);
}
reply = m.group();
String parts[] = m.group().split(",");
//__passiveHost = parts[0] + '.' + parts[1] + '.' + parts[2] + '.' + parts[3];
// 此处将_set_passive_host赋给__passiveHost
__passiveHost = _set_passive_host;
System.out.println(">----------->> Real Host IP is : "+__passiveHost);
try
{
int oct1 = Integer.parseInt(parts[4]);
int oct2 = Integer.parseInt(parts[5]);
__passivePort = (oct1 << 8) | oct2;
}
catch (NumberFormatException e)
{
throw new MalformedServerReplyException(
"Could not parse passive host information.\nServer Reply: " + reply);
}
}
分享到:
相关推荐
Apache Commons Net的FTPClient支持被动模式,通过设置passiveMode(),客户端能在服务器指定的端口上建立数据连接,解决此类网络问题。 五、源码解析 深入学习`commons-net-3.6.jar`的源码,可以帮助开发者理解FTP...
- FTP有两种工作模式:主动模式(Port模式)和被动模式(Passive模式)。主动模式下,客户端打开一个随机端口连接到服务器的20号端口,然后服务器反过来连接客户端指定的端口进行数据传输。被动模式则是服务器打开...
2. **配置FTP服务器**:编辑`/etc/ftpd/ftpaccess`配置文件,找到`Passive`选项,将其设置为`yes`以启用被动模式。例如: ``` Passive yes ``` 3. **设置防火墙**:在被动模式下,FTP服务器需要能够打开并监听一...
ftp服务器如果是主动模式,下载方法与被动模式有很大差异,本案例提供主动模式下载方案
5. ** passive模式与active模式**:FTP有两种工作模式,Passive(被动)模式和Active(主动)模式。Passive模式适用于防火墙或NAT环境,服务器会打开一个随机端口等待客户端连接,以避免被防火墙阻断。Active模式则...
2. **被动模式(Passive Mode)**:在这种模式下,服务器在某个指定范围内的端口上被动等待客户端的连接。这种方式更加灵活,适用于客户端和服务器都处于防火墙后的场景。客户端向服务器发出PASV命令后,服务器会随机...
- `passive`模式:在防火墙或NAT环境中启用,以避免端口问题。 - `prompt`:控制是否对每个文件操作提示确认。 - `quote`:直接执行FTP服务器支持的特殊命令。 4. **FTP脚本化**: 可以创建包含一系列FTP命令的...
4. **传输模式**:FTP有两种传输模式,主动(Active)和被动(Passive)。主动模式中,客户端打开一个端口向服务器发送数据;被动模式下,服务器打开一个端口等待客户端连接,用于解决防火墙和NAT设备下的连接问题。...
default-passive-events 当支持EventListenerOptions时,默认使{passive:true} 50行代码段,默认情况下启用某些事件的()。 基本上,每次您声明新的时,它都会自动设置{Passive:true} 。 安装 yarn add default...
FTP协议还定义了一系列的文件结构和传输控制机制,以适应不同类型的文件和数据格式。例如,FTP可以处理行结构、页面结构以及无结构的二进制文件。为了确保数据的正确传输,FTP提供了结构化命令(如STRU),用于指定...
构建了一个ftp服务器,通过命令ftp可登录,登录后,无法下载,上传,ls也无法执行。 通过 passive 开启和关闭 PASV模式,再ls 也是同样的问题, # 主动模式 $ pftp -v -A -d 211.159.185.xxx Connected to 211...
(5)Port和Passive 2、WinInet的中FTP的基本操作 (1)头文件 (2)打开连接和关闭 (3)CFtpConnection的操作函数 三、完成进度-----------------------------------------5 1、已完成部分 2、未完成部分 3、还需...
Passive Mode是FTP协议的一种模式,在这种模式下,FTP服务器会随机分配一个端口号用于数据传输。我们可以在`vsftpd.conf`文件中设置passive mode的端口号范围: ``` pasv_enable=YES pasv_min_port=64000 pasv_max...
3. **被动模式与主动模式**:FTP有两种数据传输模式,被动模式(Passive Mode)和主动模式(Active Mode)。在Java中,你可以通过FTPClient的setPassiveMode()或setActiveMode()方法来切换这两种模式。被动模式通常...
3. 切换到被动模式:调用相应的FTP命令如"passive"。 4. 设置工作目录:根据需要上传或下载的文件路径。 5. 上传/下载文件:使用FTP的put或get命令,结合LR的Web_file_upload或Web_file_download函数。 6. 关闭FTP...
private Integer passiveMode = FTP.BINARY_FILE_TYPE; private String encoding="UTF-8"; private int clientTimeout=120000; private int bufferSize; private int transferFileType=FTP.BINARY_FILE_...
5. **数据传输**:FTP有两种数据传输模式,主动模式(Port)和被动模式(Passive)。在主动模式下,服务器主动连接客户端;被动模式下,客户端连接服务器指定的数据端口。源码中会有处理这两种模式的逻辑。 6. **...
'passive' => env('FTP_PASSIVE_MODE', true), // 是否启用被动模式 'ssl' => env('FTP_SSL', false), // 是否使用SSL连接 'timeout' => env('FTP_TIMEOUT', 30), // 连接超时时间 ], ``` 这些配置项可以从`.env...
FTP支持两种主要的操作模式:主动模式(Active Mode)和被动模式(Passive Mode)。用户通过客户端软件连接到FTP服务器,可以执行各种文件管理操作。 #### 命令解析 ##### 连接到FTP服务器 - **ftp192.168.8.111**...
FTP协议本身有两种主要的工作模式:主动模式(Port)和被动模式(Passive)。主动模式中,客户端指定一个端口,服务器会连接到这个端口进行数据传输。而在被动模式中,服务器开启一个随机端口,客户端连接到这个端口...