您的位置:首页 > 运维架构 > Apache

安卓+apache ftp server上传文件遇到的问题:服务器ip地址、异步线程的使用

2017-04-20 18:52 603 查看
从安装好apache ftp server之后,手头就拿到了相关的代码,比较精简,但一直测试不成功。也有其他的事情搞得心烦意乱。大概搞了三天吧,我一直在修改ip地址,由于自己网络知识不扎实,再加上刚接触安卓,具体有很多东西也不熟,做了很多无用功。








好了,废话少说,进入正题。

本次使用的服务器是apache ftp server1.0.6.遇到的问题如下:

1、服务器ip地址

主要区分三个地址:127.0.0.1、 localhost、本机ip

127.0.0.1 : 回送地址,也称为环路地址。ping 127.0.0.1成功时表明TCP/IP协议在本机正常运行。一般用作本地机进程间通信,测试使用。传送过程并不经过网络,由于访问的是

                     自己,所以传输过程不进行任何 网络传输。

localhost :本地DNS解析的域名,可以配置成任意的IP地址,不过通常是127.0.0.1。可以打开本机c:\widoews\system32\driver\etc\hosts文件,看到最下面一行是

                      127.0.0.1  localhost 。当然这个可以随意更改,

本机ip地址:就是上网时用到的地址,ping 192.168.25.78就是我的本机地址,如果成功表明网卡正常工作。

在我这次使用的过程中,由于安卓虚拟器和apache服务器并不是同一ip地址,不过处在同一局域网内,所以使用的是本机IP地址。在真机上演示时,也必须遵循这个原则,在同一局域网内,传输地址是本机IP地址。

2、异步线程的使用

之前在开发的过程中,上传时会自动退出,logcat中也没什么提示。后来咨询了下大牛,找出原因是:上传过程属于后台操作,过程耗时,不使用于在UI线程中实现,因此采用后台操作。所以使用异步线程。

(1)使用thread操作

Thread m1=new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
UploadFile();//自己实现的上传函数
}
});
m1.start();(2)使用异步线程
AsyncTask是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.

导入包:import android.os.AsyncTask;

首先新建类:class DownloadTask extends AsyncTask<String, Integer, String>{
@Override
protected void onPreExecute() {
super.onPreExecute();
}

@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
UploadFile(params);
return null;
}
}
将其实例化:
DownloadTask dTask = new DownloadTask();
dTask.execute(audioFile.getAbsolutePath());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐