gpt4 book ai didi

java - 打开多个 FTP 连接

转载 作者:行者123 更新时间:2023-12-02 03:49:20 28 4
gpt4 key购买 nike

我在不同线程的代码中打开多个 FTP 连接。使用相同的凭据可以有两个到同一 FTP 服务器的连接。

这会导致主动/被动反向 channel 传输数据出现问题吗?我遇到的实际问题是,某个登录失败,即使它在不同的线程中工作了几秒钟。很难重现。

还有一个问题,标准设定是主动还是被动?哪个更好?

FTPClient ftp = new FTPClient();

ftp.setDefaultTimeout(timeoutMilliseconds);
ftp.setDataTimeout(timeoutMilliseconds);
ftp.setConnectTimeout(timeoutMilliseconds);
//ftp.setSoTimeout(1000);
//ftp.setControlKeepAliveTimeout(1000);
//ftp.setControlKeepAliveReplyTimeout(1000);

ftp.connect(serverAddress, serverPort);
logger.info("Connected successfully to " + serverAddress + ":" + serverPort);
boolean login = ftp.login(username, password);
logger.info("Logged in successfully to " + serverAddress + ":" + serverPort);


ftp.disconnect();

最佳答案

推荐使用被动模式。请找到我在项目中使用的以下设置。您可以引用https://www.jscape.com/blog/bid/80512/active-v-s-passive-ftp-simplified了解更多详情。

FTPClient ftp = new FTPClient();
ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
ftp.connect(host, port);
int reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
throw new IllegalArgumentException("Not able to connect to the ftp Server ");
}
ftp.login(userName, password);
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
ftp.setBufferSize(100000);
ftp.setConnectTimeout(1200000);
ftp.setDataTimeout(1200000);
ftp.setDefaultTimeout(1200000);

关于java - 打开多个 FTP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56790234/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com