(1)FTP连接

运行FTP客户端后,首先是连接FTP服务器,需要输入FTP服务器的IP地址及用户名、密码以及端口号后点击连接按钮开始连接FTP服务器,连接流程图如下图所示。

点击“连接”按钮后,会调用com.oyp.ftp.FTPClientFrame类的linkButtonActionPerformed(ActionEvent evt)方法,其主要代码程序如下

        /**
* 连接按钮的事件处理方法
*/
private void linkButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
String server = serverTextField.getText(); // 获取服务器地址
if (server == null) {
return;
}
String portStr = portTextField.getText(); // 获取端口号
if (portStr == null) {
portStr = "21";
}
int port = Integer.parseInt(portStr.trim());
String userStr = userTextField.getText(); // 获取用户名
userStr = userStr == null ? "" : userStr.trim();
String passStr = PassField.getText(); // 获取密码
passStr = passStr == null ? "" : passStr.trim();
cutLinkButton.doClick();
ftpClient = new FtpClient();
ftpClient.openServer(server.trim(), port); // 连接服务器
ftpClient.login(userStr, passStr); // 登录服务器
ftpClient.binary(); // 使用二进制传输模式
if (ftpClient.serverIsOpen()) { // 如果连接成功
CUT_LINK_ACTION.setEnabled(true); // 设置断开按钮可用
} else { // 否则
CUT_LINK_ACTION.setEnabled(false); // 设置断开按钮不可用
return; // 并结束事件处理
}
// 设置本地资源管理面板的FTP连接信息
localPanel.setFtpClient(server, port, userStr, passStr);
// 设置上传按钮可用
localPanel.getActionMap().get("uploadAction").setEnabled(true);
ftpPanel.setFtpClient(ftpClient);// 设置FTP资源管理面板的FTP连接信息
// 设置下载按钮可用
ftpPanel.getActionMap().get("downAction").setEnabled(true);
ftpPanel.refreshCurrentFolder();// 刷新FTP资源管理面板的当前文件夹
queuePanel.startQueue(); // 启动任务队列线程
} catch (Exception ex) {
ex.printStackTrace();
}
}

(2)FTP断开

点击“断开”按钮,会停止上传线程,停止下载线程,清空任务队列,清除FTP资源表格内容,清除本地面板的队列等,断开端连接模块流程图如图所示。

点击“断开”按钮,会触发com.oyp.ftp.CutLinkAction类的actionPerformed(ActionEvent e)方法,其主要代码如下

	/**
* 处理断开按钮的按钮动作事件的方法
*/
@Override
public void actionPerformed(ActionEvent e) {
try {
frame.ftpPanel.stopDownThread(); // 停止下载线程
frame.localPanel.stopUploadThread(); // 停止上传线程
frame.getFtpPanel().getQueue().clear(); // 清空任务队列
frame.getFtpPanel().clearTable(); // 清除FTP资源表格内容
frame.getLocalPanel().getQueue().clear(); // 清除本地面板的队列
// 如果FTP连接对象存在,并且已经连接FTP服务器
if (frame.ftpClient != null && frame.ftpClient.serverIsOpen()) {
frame.ftpClient.sendServer("quit\r\n"); // 发送断开连接的FTP协议的命令
frame.ftpClient.readServerResponse(); // 读取返回编码
frame.ftpClient = null;
}
// 设置上传按钮不可用
frame.localPanel.getActionMap().get("uploadAction").setEnabled(
false);
// 设置下载按钮不可用
frame.ftpPanel.getActionMap().get("downAction").setEnabled(false);
setEnabled(false); // 设置本按钮(断开)不可用
} catch (IOException e1) {
e1.printStackTrace();
}
}

==================================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址:http://blog.csdn.net/ouyang_peng

===================================================================================================

Java语言实现简单FTP软件------>连接管理模块的实现:主机与服务器之间的连接与关闭操作(八)的更多相关文章

  1. Java语言实现简单FTP软件------>本地文件管理模块的实现(九)

    首先看一下界面: 1.本地文件列表的显示功能 将本地的当前目录下所有文件显示出来,并显示文件的属性包括文件名.大小.日期.通过javax.swing.JTable()来显示具体的数据.更改当前文件目录 ...

  2. Java语言实现简单FTP软件------>远程文件管理模块的实现(十)

    首先看一下界面: 1.远程FTP服务器端的文件列表的显示 将远程的当前目录下所有文件显示出来,并显示文件的属性包括文件名.大小.日期.通过javax.swing.JTable()来显示具体的数据.更改 ...

  3. Java语言实现简单FTP软件------>源码放送(十三)

    Java语言实现简单FTP软件------>FTP协议分析(一) Java语言实现简单FTP软件------>FTP软件效果图预览之下载功能(二) Java语言实现简单FTP软件----- ...

  4. Java语言实现简单FTP软件------>上传下载管理模块的实现(十一)

    1.上传本地文件或文件夹到远程FTP服务器端的功能. 当用户在本地文件列表中选择想要上传的文件后,点击上传按钮,将本机上指定的文件上传到FTP服务器当前展现的目录,下图为上传子模块流程图 选择好要上传 ...

  5. Java语言实现简单FTP软件------>FTP软件主界面的实现(四)

    首先看一下该软件的整体代码框架                        1.首先介绍程序的主入口FTPMain.java,采用了一个漂亮的外观风格 package com.oyp.ftp; im ...

  6. Java语言实现简单FTP软件------>FTP协议分析(一)

    FTP(File Transfer Protocol)就是文件传输协议.通过FTP客户端从远程FTP服务器上拷贝文件到本地计算机称为下载,将本地计算机上的文件复制到远程FTP服务器上称为上传,上传和下 ...

  7. Java语言实现简单FTP软件------>FTP软件本地窗口的实现(五)

    1.首先看一下本地窗口的布局效果 2.看一下本地窗口实现的代码框架 2.本地窗口的具体实现代码LocalPanel.java package com.oyp.ftp.panel.local; impo ...

  8. Java语言实现简单FTP软件------>FTP软件远程窗口的实现(六)

    1.首先看一下远程窗口的布局效果 2.看一下本地窗口实现的代码框架 3.远程窗口主要实现代码FtpPanel.java package com.oyp.ftp.panel.ftp; import ja ...

  9. Java语言实现简单FTP软件------>辅助功能模块FTP站点管理的实现(十二)

    1.FTP站点管理 点击"FTP站点管理"按钮,弹出对话框"FTP站点管理",如下图 1) 连接站点 在FTP站点管理面板上选好要连接的站点,点击"连 ...

随机推荐

  1. eclipse maven项目导入Intellij问题处理

    1.maven打包编译时后台一直输出警告信息 [WARNING] File encoding has not been set, using platform encoding GBK, i.e. b ...

  2. odoo分析会计

    odoo财务会计凭证录入时,支持 在凭证行 输入 分析账户和 分析标签 如果凭证行设置了 分析账户或者分析标签, 则在会计凭证过账的时候, 在分析会计功能建立 分析会计分录 其中, 如果设置了分析账户 ...

  3. POJ 2375 Cow Ski Area (强连通分量)

    题目地址:POJ 2375 对每一个点向与之相邻并h小于该点的点加有向边. 然后强连通缩点.问题就转化成了最少加几条边使得图为强连通图,取入度为0和出度为0的点数的较大者就可以.注意,当强连通分量仅仅 ...

  4. Prometheus入门

    什么是TSDB? TSDB(Time Series Database)时序列数据库,我们可以简单的理解为一个优化后用来处理时间序列数据的软件,并且数据中的数组是由时间进行索引的. 时间序列数据库的特点 ...

  5. 会话管理之Cookie技术

    会话管理是web开发中比较重要的环节,这一节主要总结下会话管理中的cookie技术. 1. 何为会话 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个 ...

  6. HDU 1014 Uniform Generator 题解

    找到规律之后本题就是水题了.只是找规律也不太easy的.证明这个规律成立更加不easy. 本题就是求step和mod假设GCD(最大公约数位1)那么就是Good Choice,否则为Bad Choic ...

  7. sublime livereload插件

    1.首先在chrome商店下载livereload 安装之后记得在 chrome 的 扩展程序 里面 勾上 允许访问文件地址 2.sublime text 3 中下载插件 Livereload 3.配 ...

  8. java游戏开发基础Swing之JCheckBox

    © 版权声明:本文为博主原创文章,转载请注明出处 1.复选框(JCheckBox) 使用复选框可以完成多项选择.Swing中的复选框与AWT中的复选框相比,优点是Swing复选框中可以添加图片 JCh ...

  9. 【Oracle】使用BBED跳过丢失的归档

    在recover datafile的过程其中假设丢失了须要的归档将使得recover无法进行.使用bbed工具能够跳过丢失的归档进行recover datafile. 实验步骤例如以下: SYS@OR ...

  10. 搭建redis集群遇到的坑

    搭建redis集群遇到的坑 #!/bin/bash # 作者: tuhooo # 日期: 2017.4.23 20.15 # 用途: 通过ruby脚本启动redis伪集群 if [ $2 == &qu ...