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