安卓当ftp服务器让电脑访问文件

android当ftp服务器,电脑无线访问文件


当然这类软件应该很多吧,搜一搜就有

找源码却不是那么简单


我见过一些手机,比如华为啊,小米啊,他们在文件管理器上面就实现了这个,自带那种

网上找了图




简单说手机是ftp服务器了

电脑打开ftp不就看到手机文件了,对吧

还有配置文件,我使用raw文件夹复制的方法

下面代码也是看看别人的代码

用的技术其实也是别人的类库模块。码农气质油然而生。哭瞎



import java.io.File;  
import java.io.FileNotFoundException;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.net.InetAddress;  
import java.net.NetworkInterface;  
import java.net.SocketException;  
import java.util.Enumeration;  
  
import org.apache.ftpserver.FtpServer;  
import org.apache.ftpserver.FtpServerFactory;  
import org.apache.ftpserver.ftplet.FtpException;  
import org.apache.ftpserver.listener.ListenerFactory;  
import org.apache.ftpserver.ssl.SslConfigurationFactory;  
import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;  


import ss.snow.main.R;
  
import android.app.Activity;  
import android.content.Context;  
import android.os.Bundle;  
import android.os.Environment;  
import android.util.Log;  
import android.widget.TextView;  
  
public class FtpActivity extends Activity {  
  
      
    private FtpServer mFtpServer;  
    private String ftpConfigDir= Environment.getExternalStorageDirectory().getAbsolutePath()+"/ftpConfig/";  
  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.xx);  
          
        TextView tv=(TextView)findViewById(R.id.text);  
        String info="请通过浏览器或者我的电脑访问以下地址\n"+"ftp://"+getLocalIpAddress()+":2221\n";  
        tv.setText(info);  
          
        File f=new File(ftpConfigDir);  
        if(!f.exists())  
            f.mkdir();  
        copyResourceFile(R.raw.users, ftpConfigDir+"users.properties");  
        Config1();  
    }  
  
     public String getLocalIpAddress() {  
            String strIP=null;  
            try {  
                for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {  
                    NetworkInterface intf = en.nextElement();  
                    for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {  
                        InetAddress inetAddress = enumIpAddr.nextElement();  
                        if (!inetAddress.isLoopbackAddress()) {  
                            strIP= inetAddress.getHostAddress().toString();  
                        }  
                    }  
                }  
            } catch (SocketException ex) {  
                Log.e("msg", ex.toString());  
            }  
            return strIP;  
        }  
       
    private void copyResourceFile(int rid, String targetFile){  
        InputStream fin = ((Context)this).getResources().openRawResource(rid);  
        FileOutputStream fos=null;  
        int length;  
        try {  
            fos = new FileOutputStream(targetFile);  
            byte[] buffer = new byte[1024];   
            while( (length = fin.read(buffer)) != -1){  
                fos.write(buffer,0,length);  
            }  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally{  
            if(fin!=null){  
                try {  
                    fin.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
             if(fos!=null){  
                 try {  
                    fos.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
             }  
        }  
    }  
      
    void Config1(){  
//      Now, let's configure the port on which the default listener waits for connections.  
  
            FtpServerFactory serverFactory = new FtpServerFactory();  
                      
            ListenerFactory factory = new ListenerFactory();  
                      
            PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();  
              
            String[] str ={"mkdir", ftpConfigDir};  
            try {   
                Process ps = Runtime.getRuntime().exec(str);  
                try {  
                    ps.waitFor();  
                } catch (InterruptedException e) {  
                    e.printStackTrace();  
                }   
            }catch (IOException e) {  
                e.printStackTrace();  
            }  
              
            String filename=ftpConfigDir+"users.properties";//"/sdcard/users.properties";  
            File files=new File(filename);  
              
            userManagerFactory.setFile(files);  
            serverFactory.setUserManager(userManagerFactory.createUserManager());  
            // set the port of the listener  
            factory.setPort(2221);  
  
            // replace the default listener  
            serverFactory.addListener("default", factory.createListener());  
                              
            // start the server  
            FtpServer server = serverFactory.createServer();   
            this.mFtpServer = server;         
            try {  
                server.start();  
            } catch (FtpException e) {  
                e.printStackTrace();  
            }  
    }  
      
    void Config2(){  
//      Now, let's make it possible for a client to use FTPS (FTP over SSL) for the default listener.  
  
  
        FtpServerFactory serverFactory = new FtpServerFactory();  
                  
        ListenerFactory factory = new ListenerFactory();  
                  
        // set the port of the listener  
        factory.setPort(2221);  
  
        // define SSL configuration  
        SslConfigurationFactory ssl = new SslConfigurationFactory();  
        ssl.setKeystoreFile(new File(ftpConfigDir+"ftpserver.jks"));  
        ssl.setKeystorePassword("password");  
  
        // set the SSL configuration for the listener  
        factory.setSslConfiguration(ssl.createSslConfiguration());  
        factory.setImplicitSsl(true);  
  
        // replace the default listener  
        serverFactory.addListener("default", factory.createListener());  
                  
        PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();  
        userManagerFactory.setFile(new File(ftpConfigDir+"users.properties"));  
                  
        serverFactory.setUserManager(userManagerFactory.createUserManager());  
                  
        // start the server  
        FtpServer server = serverFactory.createServer();   
        this.mFtpServer = server;    
        try {  
            server.start();  
        } catch (FtpException e) {  
            e.printStackTrace();  
        }  
    }  
      
    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
          
        if(null != mFtpServer) {  
            mFtpServer.stop();  
            mFtpServer = null;  
        }  
    }  
      
}  




本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部