Java 无法连接到ftp服务器android ftp应用程序

Java 无法连接到ftp服务器android ftp应用程序,java,android,ftp,Java,Android,Ftp,我试图在android studio中构建一个FTP应用程序,但我似乎无法让它正常工作。经过一些调试后,我能够避免代码中的一些错误,但现在当我尝试连接到Ubuntu中的本地ftp服务器时,我收到了以下消息“错误:无法连接到主机192.168.1.2”(从笔记本电脑的终端连接时,我的ftp服务器工作正常)。应用程序编译和安装良好。下面是MainActivity.java中的代码 public boolean bindService(Intent service, ServiceConnection

我试图在android studio中构建一个FTP应用程序,但我似乎无法让它正常工作。经过一些调试后,我能够避免代码中的一些错误,但现在当我尝试连接到Ubuntu中的本地ftp服务器时,我收到了以下消息“错误:无法连接到主机192.168.1.2”(从笔记本电脑的终端连接时,我的ftp服务器工作正常)。应用程序编译和安装良好。下面是MainActivity.java中的代码

public boolean bindService(Intent service, ServiceConnection conn, int flags) {
    return false;
}

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView = (TextView) findViewById(R.id.textView);
    connect = (Button) findViewById(R.id.connect_button);
    connect.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            if (isNetworkAvailable()) {
                new FTPConnect().execute();
            } else {
                AlertDialog.Builder b = new AlertDialog.Builder(MainActivity.this);
                b.setMessage("Internet connectivity failure.Try again!");
                b.show();
            }
        }
    });
}

class FTPConnect extends AsyncTask<Void, Void, Void> {
    ProgressDialog pDialog;

    @Override
    protected void onPreExecute() {
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Connecting...");
        pDialog.show();
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... params) {

        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                ftpClient = new FTPClient();
                try {
                    ftpClient.connect(FTPSERVER, PORT);
                    ftpClient.login(USERNAME, PASSWORD);
                    ftpClient.enterLocalPassiveMode();
                    System.out.println("status :: " + ftpClient.getStatus());
                    setContentView(R.layout.connected);
                    textView = (TextView) findViewById(R.id.textView);
                    FTPFile[] files = ftpClient.listFiles();
                    DateFormat dateFormater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    for (FTPFile file : files) {
                        String details = file.getName();
                        if (file.isDirectory()) {
                            details = "[" + details + "]";
                        }
                        details += "\t\t" + file.getSize();
                        details += "\t\t" + dateFormater.format(file.getTimestamp().getTime());
                        System.out.println(details);
                    }
                } catch (Exception e) {
                    Log.d(TAG, "Error: could not connect to host " + FTPSERVER);
                }
            }
        });
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        if (null != pDialog && pDialog.isShowing()) {
            pDialog.dismiss();
        }
        super.onPostExecute(result);
    }
}

// Check Internet Connection

public boolean isNetworkAvailable() {
    ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity == null) {
        return false;
    } else {
        NetworkInfo[] info = connectivity.getAllNetworkInfo();
        if (info != null) {
            for (NetworkInfo anInfo : info) {
                if (anInfo.getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        }
    }
    return false;
}
public boolean绑定服务(意图服务、服务连接连接、int标志){
返回false;
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=(textView)findViewById(R.id.textView);
connect=(按钮)findViewById(R.id.connect\u按钮);
connect.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
if(isNetworkAvailable()){
新建FTPConnect().execute();
}否则{
AlertDialog.Builder b=新建AlertDialog.Builder(MainActivity.this);
b、 setMessage(“Internet连接失败。请重试!”);
b、 show();
}
}
});
}
类FTPConnect扩展了异步任务{
ProgressDialog;
@凌驾
受保护的void onPreExecute(){
pDialog=新建进度对话框(MainActivity.this);
设置消息(“正在连接…”);
pDialog.show();
super.onPreExecute();
}
@凌驾
受保护的Void doInBackground(Void…参数){
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
ftpClient=新的ftpClient();
试一试{
连接(FTPSERVER,端口);
ftpClient.login(用户名、密码);
ftpClient.enterLocalPassiveMode();
System.out.println(“状态::”+ftpClient.getStatus());
setContentView(R.layout.connected);
textView=(textView)findViewById(R.id.textView);
FTPFile[]files=ftpClient.listFiles();
DateFormat DateFormatter=新的SimpleDateFormat(“yyyy-MM-dd HH:MM:ss”);
用于(FTPFile文件:文件){
字符串详细信息=file.getName();
if(file.isDirectory()){
详细信息=“[”+详细信息+“]”;
}
详细信息+=“\t\t”+文件.getSize();
详细信息+=“\t\t”+dateformatter.format(file.getTimestamp().getTime());
系统输出打印项次(详细信息);
}
}捕获(例外e){
Log.d(标记“错误:无法连接到主机”+FTPSERVER);
}
}
});
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
if(null!=pDialog&&pDialog.isShowing()){
pDialog.disclose();
}
super.onPostExecute(结果);
}
}
//检查互联网连接
公共布尔值isNetworkAvailable(){
ConnectivityManager connectivity=(ConnectivityManager)getSystemService(Context.connectivity_服务);
if(连接性==null){
返回false;
}否则{
NetworkInfo[]info=connectivity.getAllNetworkInfo();
如果(信息!=null){
用于(网络信息信息:信息){
if(anInfo.getState()==NetworkInfo.State.CONNECTED){
返回true;
}
}
}
}
返回false;
}
日志:

07-03 23:43:34.901 16781-16781/com.example.vagil.ftpclient_1 D/dalvikvm﹕ 延迟启用CheckJNI 07-03 23:43:35.051 16781-16781/com.example.vagil.ftpclient_1 D/ActivityThread﹕ SetTargetSeapUtilization:0.25 07-03 23:43:35.051 16781-16781/com.example.vagil.ftpclient_1 D/ActivityThread﹕ SetTargetTheApidealFree:8388608 07-03 23:43:35.051 16781-16781/com.example.vagil.ftpclient_1 D/ActivityThread﹕ setTargetHeapConcurrentStart:2097152 07-03 23:43:35.391 16781-16781/com.example.vagil.ftpclient_1 I/dalvikvm﹕ 找不到方法android.view.ViewGroup.onRtlPropertiesChanged,从方法android.support.v7.widget.Toolbar.onRtlPropertiesChanged引用 07-03 23:43:35.391 16781-16781/com.example.vagil.ftpclient_1 W/dalvikvm﹕ VFY:无法解析虚拟方法13338:Landroid/view/ViewGroup;。不动产变更(一)V 07-03 23:43:35.391 16781-16781/com.example.vagil.ftpclient_1 D/dalvikvm﹕ VFY:在0x0007处替换操作码0x6f 07-03 23:43:35.401 16781-16781/com.example.vagil.ftpclient_1 I/dalvikvm﹕ 找不到方法android.content.res.TypedArray.getChangingConfigurations,该方法引用自方法android.support.v7.internal.widget.TintTypedArray.getChangingConfigurations 07-03 23:43:35.401 16781-16781/com.example.vagil.ftpclient_1 W/dalvikvm﹕ VFY:无法解析虚拟方法413:Landroid/content/res/TypedArray;。getChangingConfigurations()I 07-03 23:43:35.401 16781-16781/com.example.vagil.ftpclient_1 D/dalvikvm﹕ VFY:在0x0002处替换操作码0x6e 07-03 23:43:35.401 16781-16781/com.example.vagil.ftpclient_1 I/dalvikvm﹕ 找不到从方法android.support.v7.internal.widget.TintTypedArray.getType引用的方法android.content.res.TypedArray.getType 07-03 23:43:35.401 16781-16781/com.example.vagil.ftpclient_1 W/dalvikvm﹕ VFY:无法解析虚拟方法435:Landroid/content/res/TypedArray;。getType(I)I 07-03 23:43:35.401 16781-16781/com.example.vagil.ftpclient_1 D/dalvikvm﹕ VFY:在0x0002处替换操作码0x6e 07-03 23:43:35.511 16781-16781/com.example.vagil.ftpclient_1 D/libEGL﹕ 已加载/system/lib/egl/libEGL_adreno200.so 07-03 23:43:35.511 16781-16781/com.example.vagil.ftpclient_1 D/libEGL﹕ 已加载/系统