日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
android做ftp服務(wù)器_FTP

在Android上實現(xiàn)FTP服務(wù)器,可以使用第三方庫Apache Commons Net,以下是詳細的步驟和代碼示例:

成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)余慶,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

1、添加依賴

在項目的build.gradle文件中添加Apache Commons Net的依賴:

dependencies {
    implementation 'commonsnet:commonsnet:3.8.0'
}

2、創(chuàng)建FTP服務(wù)器

創(chuàng)建一個類MyFTPServer,繼承自org.apache.commons.net.ftp.FTPServer,并重寫相關(guān)方法。

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.net.ftp.FTPServer;
import java.io.File;
import java.io.IOException;
import java.util.Hashtable;
public class MyFTPServer extends FTPServer {
    private String rootDirectory;
    public MyFTPServer(int port, String rootDirectory) throws IOException {
        super(port);
        this.rootDirectory = rootDirectory;
    }
    @Override
    public void start() throws IOException {
        Hashtable env = new Hashtable<>();
        env.put("USER", "user"); // 設(shè)置用戶名
        env.put("PASSWORD", "password"); // 設(shè)置密碼
        env.put("WORKING_DIRECTORY", rootDirectory); // 設(shè)置工作目錄
        env.put("LISTEN_ADDRESS", "127.0.0.1"); // 設(shè)置監(jiān)聽地址
        env.put("MAX_CONNECTS", "5"); // 設(shè)置最大連接數(shù)
        env.put("ENCODING", "UTF8"); // 設(shè)置編碼格式
        env.put("FILE_BUFFER_SIZE", "4096"); // 設(shè)置文件緩沖區(qū)大小
        env.put("ACCEPT_LOCAL_USERS", "true"); // 允許本地用戶登錄
        env.put("RESOLVE_TIMEOUT", "5000"); // 設(shè)置解析超時時間(毫秒)
        env.put("READ_TIMEOUT", "5000"); // 設(shè)置讀取超時時間(毫秒)
        env.put("WRITE_TIMEOUT", "5000"); // 設(shè)置寫入超時時間(毫秒)
        env.put("CLIENT_PORT_RANGE", "50006000"); // 設(shè)置客戶端端口范圍
        env.put("SERVER_PORT_RANGE", "50006000"); // 設(shè)置服務(wù)器端口范圍
        env.put("DATA_CONNECTION_PROTOCOL", "TCP"); // 設(shè)置數(shù)據(jù)連接協(xié)議
        env.put("ACTIVE_MODE", "true"); // 設(shè)置為主動模式
        env.put("PASSIVE_MODE_ENABLED", "false"); // 禁用被動模式
        env.put("SERVER_TYPE", "DEFAULT_FTP_SERVER"); // 設(shè)置服務(wù)器類型為默認的FTP服務(wù)器
        env.put("SERVER_SOFTWARE", "Apache Commons Net"); // 設(shè)置服務(wù)器軟件為Apache Commons Net
        env.put("SERVER_NAME", "MyFTPServer"); // 設(shè)置服務(wù)器名稱為"MyFTPServer"
        env.put("SERVER_ROOT_DIRECTORY", rootDirectory); // 設(shè)置服務(wù)器根目錄為rootDirectory
        env.put("SERVER_IS_SECURE", "false"); // 設(shè)置為不安全模式,即非SSL/TLS模式
        env.put("SERVER_ENCODING", "UTF8"); // 設(shè)置服務(wù)器編碼格式為UTF8
        env.put("SERVER_MAIN_THREADS", "2"); // 設(shè)置服務(wù)器主線程數(shù)為2
        env.put("SERVER_MAX_THREADS", "10"); // 設(shè)置服務(wù)器最大線程數(shù)為10
        env.put("SERVER_THREADS_PER_KEY", "5"); // 設(shè)置每個鍵對應(yīng)的線程數(shù)為5
        env.put("SERVER_THREADS_PER_VALUE", "5"); // 設(shè)置每個值對應(yīng)的線程數(shù)為5
        env.put("SERVER_THREADS_MINIMUM", "2"); // 設(shè)置最小線程數(shù)為2
        env.put("SERVER_THREADS_MAXIMUM", "10"); // 設(shè)置最大線程數(shù)為10
        env.put("SERVER_LOGGING", "false"); // 設(shè)置為不記錄日志模式
        env.put("SERVER_LOGGING_CLASS", "org.apache.commons.net.ftp.FTPLogging"); // 設(shè)置日志類為FTPLogging
        env.put("SERVER_LOGGING_LEVEL", "OFF"); // 設(shè)置日志級別為OFF(關(guān)閉日志)
        super.init(null, env); // 初始化服務(wù)器,傳入null作為命令監(jiān)聽器,使用自定義的參數(shù)環(huán)境變量表作為參數(shù)列表
    }
}

3、啟動FTP服務(wù)器

在需要啟動FTP服務(wù)器的地方,創(chuàng)建MyFTPServer實例并調(diào)用start()方法。

public class MainActivity extends AppCompatActivity {
    private MyFTPServer ftpServer;
    private EditText etPort;
    private EditText etRootDirectory;
    private Button btnStart;
    private Button btnStop;
    private boolean isRunning = false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        etPort = findViewById(R.id.etPort);
        etRootDirectory = findViewById(R.id.etRootDirectory);
        btnStart = findViewById(R.id.btnStart);
        btnStop = findViewById(R.id.btnStop);
    }
    public void startFtpServer(View view) {
        if (isRunning) {
            Toast.makeText(this, "FTP服務(wù)器已啟動", Toast.LENGTH_SHORT).show();
            return;
        }
        try {
            int port = Integer.parseInt(etPort.getText().toString());
            String rootDirectory = etRootDirectory.getText().toString();
            File directory = new File(rootDirectory);
            if (!directory.exists() || !directory.isDirectory()) {
                Toast.makeText(this, "根目錄不存在或不是一個目錄", Toast.LENGTH_SHORT).show();
                return;
            } else {
                ftpServer = new MyFTPServer(port, rootDirectory);
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            ftpServer.start(); // 啟動FTP服務(wù)器,在新線程中執(zhí)行,避免阻塞UI線程
                            isRunning = true; // 標(biāo)記服務(wù)器正在運行狀態(tài)為true,以便停止按鈕生效
                            Toast.makeText(MainActivity.this, "FTP服務(wù)器已啟動,端口:" + port, Toast.LENGTH_SHORT).show();
                        } catch (IOException e) {
                            e.printStackTrace();
                            Toast.makeText(MainActivity.this, "啟動FTP服務(wù)器失?。? + e.getMessage(), Toast.LENGTH_SHORT).show();
                        } finally {
                            isRunning = false; // 確保最后將運行狀態(tài)標(biāo)記為false,避免重復(fù)啟動服務(wù)器的問題發(fā)生。

網(wǎng)頁題目:android做ftp服務(wù)器_FTP
本文網(wǎng)址:http://www.5511xx.com/article/cdhdihs.html