猿问

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

客户端首先进入被动模式,因为我不知道远程 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)。


莫回无
浏览 354回答 1
1回答

翻过高山走不出你

在主动模式 FTP 中,服务器必须打开返回给客户端的 TCP 连接;除非您的客户端直接在 Internet 上(没有防火墙或地址转发),否则活动模式将不起作用。相反,被动模式 FTP 不会打开从服务器到客户端的 TCP 套接字,并且在两种情况下都可以工作(直接互联网连接和通过地址转发的互联网连接)。大多数计算机都在防火墙后面并使用地址转发,因此通常采用被动模式。
随时随地看视频慕课网APP

相关分类

Java
我要回答