Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过FTPClient进入FTP服务器的被动模式或主动模式_Java_Ftp_Ftp Client_Apache Commons Net - Fatal编程技术网

Java 如何通过FTPClient进入FTP服务器的被动模式或主动模式

Java 如何通过FTPClient进入FTP服务器的被动模式或主动模式,java,ftp,ftp-client,apache-commons-net,Java,Ftp,Ftp Client,Apache Commons Net,客户端首先进入被动模式,因为我不知道远程FTP服务器是主动模式还是被动模式 通常,首先进入被动模式 代码如下: FTPClient ftpClient = new FTPClient(); ftpClient.connect(ip,port); ftpClient.login(id,pw); ftpClient.enterLocalPassiveMode(); ... (occur mode error) (I use try-catch in case an error occurs) (ac

客户端首先进入被动模式,因为我不知道远程FTP服务器是主动模式还是被动模式

通常,首先进入被动模式

代码如下:

FTPClient ftpClient = new FTPClient();
ftpClient.connect(ip,port);
ftpClient.login(id,pw);
ftpClient.enterLocalPassiveMode();
...
(occur mode error)
(I use try-catch in case an error occurs)
(active mode reconnect)
...
ftpClient.logout();
ftpClient.disconnect();
ftpClient.connect(ip,port);
ftpClient.login(id,pw);
ftpClient.enterLocalActiveMode();
我想听听这种模式处理的正确方法


我正在使用FTPClient Apache Commons Net。

在活动模式FTP中,服务器必须打开一个TCP连接,返回到客户端;除非您的客户端直接在internet上,没有防火墙或地址转发,否则活动模式将无法工作

相反,被动模式FTP不会打开从服务器到客户机的TCP套接字,在这两种情况下都可以直接连接internet和通过地址转发连接internet


大多数计算机都在防火墙后面,使用地址转发,因此被动模式通常是可行的。

您的意思是,如果TCP连接对客户端开放,客户端可以使用ftpCliant.enterLocalActiveMode而不是ftpClient进行访问。enterLocalPassiveModep在所有情况下都会打开从客户端到服务器的命令通道;要发送数据,有两个选项之一可用。PORT命令用于进入主动模式并打开从服务器到客户端的连接,或者PASV命令用于进入被动模式并打开从客户端到服务器的连接。在这两种情况下,第二个通道实际上用于发送数据。FTP服务器设置是确定被动模式服务器还是主动模式服务器?或者FTP服务器提供主动模式还是被动模式,并允许客户端选择第二种模式。客户选择。感谢您的友好回答。。我知道在FTP服务器设置中,我通过使用vsftpd添加pasv_enable=Yes来使用被动模式。最后,如果我没有将pasv_enable=YES添加到FTP服务器设置中,则只能使用PORTactive模式?如果FTP服务器首先将过去的_enable设置为YES,客户端会选择被动模式还是主动模式?我已经在回答中写道,尽管使用了不同的帐户发布,但FTP服务器不是主动或被动的。这不是一个开关。大多数服务器都支持这两种模式。你一直在问一个错误的问题。