在Android中连接到Windows FTP服务器时,可能会遇到超时问题。以下是一个可能的解决方案,其中包含代码示例:
implementation 'commons-net:commons-net:3.7'
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
public class FTPHelper {
private static final int TIMEOUT = 10000; // 设置连接和读取超时时间
public static FTPClient connect(String server, int port, String username, String password) {
FTPClient ftpClient = new FTPClient();
try {
ftpClient.setConnectTimeout(TIMEOUT);
ftpClient.setDataTimeout(TIMEOUT);
ftpClient.setDefaultTimeout(TIMEOUT);
ftpClient.connect(server, port);
ftpClient.login(username, password);
ftpClient.enterLocalPassiveMode(); // 进入被动模式
ftpClient.setFileType(FTP.BINARY_FILE_TYPE); // 设置文件类型为二进制
return ftpClient;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
import android.os.AsyncTask;
import org.apache.commons.net.ftp.FTPClient;
public class MainActivity extends AppCompatActivity {
private static final String SERVER = "ftp.example.com";
private static final int PORT = 21;
private static final String USERNAME = "your_username";
private static final String PASSWORD = "your_password";
private FTPClient ftpClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 在后台线程中连接到FTP服务器
AsyncTask.execute(new Runnable() {
@Override
public void run() {
ftpClient = FTPHelper.connect(SERVER, PORT, USERNAME, PASSWORD);
if (ftpClient != null) {
// 连接成功
// 执行其他FTP操作
} else {
// 连接失败
}
}
});
}
}
通过上述代码,你可以在Android应用程序中连接到Windows FTP服务器并执行其他FTP操作。记得替换代码中的FTP服务器地址、端口、用户名和密码为你自己的凭据。
下一篇:Android无法连接蓝牙控制器