parent
351ec2e19e
commit
f79c14ec55
@ -0,0 +1,117 @@ |
||||
/* |
||||
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
|
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
package com.arialyy.aria.core.download.downloader; |
||||
|
||||
import android.text.TextUtils; |
||||
import android.util.Log; |
||||
import com.arialyy.aria.core.AriaManager; |
||||
import java.io.IOException; |
||||
import org.apache.commons.net.ftp.FTPClient; |
||||
import org.apache.commons.net.ftp.FTPReply; |
||||
|
||||
/** |
||||
* Created by Aria.Lao on 2017/7/26. |
||||
*/ |
||||
public class FtpClientHelp { |
||||
private final String TAG = "FtpClientHelp"; |
||||
private static volatile FtpClientHelp INSTANCE = null; |
||||
|
||||
private FTPClient client; |
||||
private String serverIp, user, pw, account; |
||||
private int port; |
||||
|
||||
private FtpClientHelp() { |
||||
} |
||||
|
||||
public static FtpClientHelp getInstnce() { |
||||
if (INSTANCE == null) { |
||||
synchronized (AriaManager.LOCK) { |
||||
INSTANCE = new FtpClientHelp(); |
||||
} |
||||
} |
||||
return INSTANCE; |
||||
} |
||||
|
||||
public FTPClient getClient() { |
||||
if (client == null || !client.isConnected()) { |
||||
createClient(); |
||||
} |
||||
return client; |
||||
} |
||||
|
||||
/** |
||||
* 登录到FTP服务器,当客户端为null或客户端没有连接到FTP服务器时才会执行登录操作 |
||||
*/ |
||||
public void login(String serverIp, int port, String user, String pw, String account) { |
||||
this.serverIp = serverIp; |
||||
this.port = port; |
||||
this.user = user; |
||||
this.pw = pw; |
||||
this.account = account; |
||||
if (client == null || !client.isConnected()) { |
||||
createClient(); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 登出 |
||||
*/ |
||||
public void logout() { |
||||
try { |
||||
if (client != null && client.isConnected()) { |
||||
client.logout(); |
||||
} |
||||
} catch (IOException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
|
||||
FTPClient createClient() { |
||||
new Thread(new Runnable() { |
||||
@Override public void run() { |
||||
client = new FTPClient(); |
||||
try { |
||||
client.connect(serverIp, port); |
||||
if (!TextUtils.isEmpty(account)) { |
||||
client.login(user, pw); |
||||
} else { |
||||
client.login(user, pw, account); |
||||
} |
||||
int reply = client.getReplyCode(); |
||||
if (!FTPReply.isPositiveCompletion(reply)) { |
||||
client.disconnect(); |
||||
Log.e(TAG, "无法连接到ftp服务器,错误码为:" + reply); |
||||
} |
||||
} catch (IOException e) { |
||||
Log.d(TAG, e.getMessage()); |
||||
} finally { |
||||
synchronized (FtpClientHelp.this) { |
||||
FtpClientHelp.this.notify(); |
||||
} |
||||
} |
||||
} |
||||
}).start(); |
||||
synchronized (FtpClientHelp.this) { |
||||
try { |
||||
wait(); |
||||
} catch (InterruptedException e) { |
||||
e.printStackTrace(); |
||||
} |
||||
} |
||||
|
||||
return client; |
||||
} |
||||
} |
Loading…
Reference in new issue