利用业余时间。学习一些实用的东西,假设手又有点贱的话。最好还是自己也跟着敲起来
。
在android上能够通过自带的ftp组件来完毕各种功能。这次是由于项目中看到用了Commons-net-ftp的包完毕的,所以就以此试试手。
这次是分享关于在android上使用FTP协议(文件传输协议)进行文件的下载、上传的功能。我们能够先了解一下,FTP和HTTP一样都是Internet上广泛使用的协议。用来在两台计算机之间互相传送文件。
相比于HTTP。FTP协议要复杂得多。复杂的原因,是由于FTP协议要用到两个TCP连接,一个是命令链路,用来在FTPclient与server之间传递命令;还有一个是数据链路,用来上传或下载数据。
1.为了測试FTP服务。本文中使用的是filezilla server 程序 模拟的。
3.主界面和源码
MainActivity.java (代码非常粗糙,但将就着看吧)
/**
* ftp demo的主界面
* @author jan
*
*/
public class MainActivity extends Activity implements OnClickListener {
private static final String TAG = "MainActivity";
private static final int SHOW_DIALOG = 1000;
private static final int HIDE_DIALOG = 1001;
private Button mLoginButton;
private EditText mUserEt;
private EditText mPasswordEt;
private Button mDownloadBtn;
private Button mUploadBtn;
private FTPManager mFtpManager;
private InputMethodManager mImm;
private ProgressDialog mProgressDialog;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == SHOW_DIALOG) {
showProgressDialog(msg.obj == null ?
"请等待..." : msg.obj
.toString());
} else if (msg.what == HIDE_DIALOG) {
hideProgressDialog();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
mImm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
initView();
FTPConfig config = new FTPConfig("192.168.1.29", 21);
config.user = "jan";
config.pwd = "123456";
mUserEt.setText(config.user);
mPasswordEt.setText(config.pwd);
mFtpManager = FTPManager.getInstance(config);
}
private void initView() {
mLoginButton = (Button) findViewById(R.id.login_button);
mLoginButton.setOnClickListener(this);
mUserEt = (EditText) findViewById(R.id.username_et);
mPasswordEt = (EditText) findViewById(R.id.password_et);
mDownloadBtn = (Button) findViewById(R.id.button1);
mDownloadBtn.setOnClickListener(this);
mUploadBtn = (Button) findViewById(R.id.button2);
mUploadBtn.setOnClickListener(this);
}
private void showProgressDialog(String content) {
if (mProgressDialog == null) {
mProgressDialog = new ProgressDialog(this,
ProgressDialog.STYLE_HORIZONTAL);
}
mProgressDialog.setTitle("提示信息");
mProgressDialog.setMessage(content);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
}
private void hideProgressDialog() {
if (mProgressDialog != null) {
mProgressDialog.dismiss();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
new Thread() {
@Override
public void run() {
mFtpManager.close();
}
}.start();
ToastUtil.cancel();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
// 连接和登陆測试
case R.id.login_button:
loginFtp();
break;
// 下