Java语言实现简单FTP软件------>连接管理模块的实现:主机与服务器之间的连接与关闭操作(八)
(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软件------>连接管理模块的实现:主机与服务器之间的连接与关闭操作(八)的更多相关文章
- Java语言实现简单FTP软件------>本地文件管理模块的实现(九)
首先看一下界面: 1.本地文件列表的显示功能 将本地的当前目录下所有文件显示出来,并显示文件的属性包括文件名.大小.日期.通过javax.swing.JTable()来显示具体的数据.更改当前文件目录 ...
- Java语言实现简单FTP软件------>远程文件管理模块的实现(十)
首先看一下界面: 1.远程FTP服务器端的文件列表的显示 将远程的当前目录下所有文件显示出来,并显示文件的属性包括文件名.大小.日期.通过javax.swing.JTable()来显示具体的数据.更改 ...
- Java语言实现简单FTP软件------>源码放送(十三)
Java语言实现简单FTP软件------>FTP协议分析(一) Java语言实现简单FTP软件------>FTP软件效果图预览之下载功能(二) Java语言实现简单FTP软件----- ...
- Java语言实现简单FTP软件------>上传下载管理模块的实现(十一)
1.上传本地文件或文件夹到远程FTP服务器端的功能. 当用户在本地文件列表中选择想要上传的文件后,点击上传按钮,将本机上指定的文件上传到FTP服务器当前展现的目录,下图为上传子模块流程图 选择好要上传 ...
- Java语言实现简单FTP软件------>FTP软件主界面的实现(四)
首先看一下该软件的整体代码框架 1.首先介绍程序的主入口FTPMain.java,采用了一个漂亮的外观风格 package com.oyp.ftp; im ...
- Java语言实现简单FTP软件------>FTP协议分析(一)
FTP(File Transfer Protocol)就是文件传输协议.通过FTP客户端从远程FTP服务器上拷贝文件到本地计算机称为下载,将本地计算机上的文件复制到远程FTP服务器上称为上传,上传和下 ...
- Java语言实现简单FTP软件------>FTP软件本地窗口的实现(五)
1.首先看一下本地窗口的布局效果 2.看一下本地窗口实现的代码框架 2.本地窗口的具体实现代码LocalPanel.java package com.oyp.ftp.panel.local; impo ...
- Java语言实现简单FTP软件------>FTP软件远程窗口的实现(六)
1.首先看一下远程窗口的布局效果 2.看一下本地窗口实现的代码框架 3.远程窗口主要实现代码FtpPanel.java package com.oyp.ftp.panel.ftp; import ja ...
- Java语言实现简单FTP软件------>辅助功能模块FTP站点管理的实现(十二)
1.FTP站点管理 点击"FTP站点管理"按钮,弹出对话框"FTP站点管理",如下图 1) 连接站点 在FTP站点管理面板上选好要连接的站点,点击"连 ...
随机推荐
- Angular 学习笔记——filter
<!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <met ...
- 渗透测试中的文件传输通道1- cmd下下载文件
Set xPost = createObject("Microsoft.XMLHTTP")xPost.Open "GET","http://www.x ...
- Laravel之Session
一.配置 Session 配置文件位于config/session.php .默认情况下,Laravel 使用的session 驱动为文件驱动,这对许多应用而言是没有什么问题的.在生产环境中,你可能考 ...
- 借助backtrace和demangle实现异常类Exception
C++的异常类是没有栈痕迹的,如果需要获取栈痕迹,需要使用以下函数: #include <execinfo.h> int backtrace(void **buffer, int size ...
- 使用UI Automation实现自动化测试--2
1. 首先建立一个待测试的winform程序,即UI Automation的服务端. 下面是button事件处理程序. private void CalculateButton_Click(objec ...
- 拒绝IP登陆
tail -n 30 /var/log/messages 发现很多IP尝试登陆,直接封禁. 解决方案:1. vi /etc/hosts.allow 添加 sshd:143.63.182.238 [注意 ...
- zabbix监控sockets连接数
配置zabbix客户端配置文件 vim /etc/zabbix/zabbix_agentd.conf 添加 Include=/etc/zabbix/zabbix_agentd.d/ 添加脚本对soc ...
- 合并apk和odex
Android的ROM中有很多odex文件,相对于APK中的dex文件而言这个odex有什么作用呢? 如果你仔细观察会发现文件名时一一对应的,同时那些对应的apk文件中没有dex文件.这样做可以使其厂 ...
- BFS和DFS的java实现
<pre name="code" class="java"> import java.util.HashMap; import java.util. ...
- windows和linux下目录分隔符兼容问题(换行回车兼容)
windows和linux下目录分隔符兼容 DIRECTORY_SEPARATOR 换行回车兼容 PHP_EOF