导入commons-net-1.1.0.jar。1.4版本在上传文件时上传完的文件大小总为0。
package com.network.manage.device.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.SocketException;
import java.net.UnknownHostException;
import org.apache.commons.net.tftp.TFTP;
import org.apache.commons.net.tftp.TFTPClient;
public class TFTPUtil {
private static TFTPClient tftp = new TFTPClient();
public static boolean downloadFile(String hostname, String localFilename,
String remoteFilename,int port) {
// 设置超时时间为60秒
tftp.setDefaultTimeout(60000);
// 打开本地socket
try {
tftp.open();
} catch (SocketException e) {
System.err.println("无法打开本地 UDP socket!");
System.err.println(e.getMessage());
}
boolean closed,success;
closed = false;
success = false;
FileOutputStream output = null;
File file;
file = new File(localFilename);
if (file.exists()) {
System.err.println("文件: " + localFilename + " 已经存在!");
return success;
}
try {
output = new FileOutputStream(file);
} catch (IOException e) {
tftp.close();
System.err.println("无法打开要写入的本地文件!");
System.err.println(e.getMessage());
return success;
}
try {
tftp.receiveFile(remoteFilename, TFTP.BINARY_MODE, output, hostname, port);
//tftp.receiveFile(remoteFilename, TFTP.BINARY_MODE, output, hostname);
success = true;
} catch (UnknownHostException e) {
System.err.println("无法解析主机!");
System.err.println(e.getMessage());
return success;
} catch (IOException e) {
System.err.println("接收文件时有I/O异常!");
System.err.println(e.getMessage());
return success;
} finally {
// 关闭本地 socket 和输出的文件
tftp.close();
try {
if (null != output) {
output.close();
}
closed = true;
} catch (IOException e) {
closed = false;
System.err.println("关闭文件时出错!");
System.err.println(e.getMessage());
}
}
if (!closed)
return false;
return success;
}
public static boolean uploadFile(String hostname, String remoteFilename, InputStream input ,int port) {
// 设置超时时间为10秒
tftp.setDefaultTimeout(10000);
// 打开本地socket
try {
tftp.open();
} catch (SocketException e) {
System.err.println("无法打开本地 UDP socket!");
System.err.println(e.getMessage());
}
boolean success,closed;
closed = false;
success = false;
try {
//tftp.sendFile(remoteFilename, TFTP.BINARY_MODE, input, hostname);
tftp.sendFile(remoteFilename, TFTP.BINARY_MODE, input, hostname, port);
success = true;
} catch (UnknownHostException e) {
System.err.println("无法解析主机!");
System.err.println(e.getMessage());
//System.exit(1);
return success;
} catch (IOException e) {
System.err.println("发送文件时有I/O异常!");
System.err.println(e.getMessage());
return success;
//System.exit(1);
} finally {
// 关闭本地 socket 和输出的文件
tftp.close();
try {
if (null != input) {
input.close();
}
closed = true;
} catch (IOException e) {
closed = false;
System.err.println("关闭文件时出错!");
System.err.println(e.getMessage());
}
}
if (!closed)
return false;
return success;
}
public static boolean deleteFile(String hostname, String remoteFilename,int port){
// 设置超时时间为10秒
tftp.setDefaultTimeout(10000);
// 打开本地socket
try {
tftp.open();
} catch (SocketException e) {
System.err.println("无法打开本地 UDP socket!");
System.err.println(e.getMessage());
}
boolean success;
success = false;
try {
//目前没找到TFTPClient支持的删除方法,此处只把服务器上的文件更新为空
tftp.sendFile(remoteFilename, TFTP.BINARY_MODE, null, hostname, port);
success = true;
} catch (UnknownHostException e) {
System.err.println("无法解析主机!");
System.err.println(e.getMessage());
//System.exit(1);
return success;
} catch (IOException e) {
System.err.println("发送文件时有I/O异常!");
System.err.println(e.getMessage());
return success;
//System.exit(1);
} finally {
// 关闭本地 socket 和输出的文件
tftp.close();
}
return success;
}
}
分享到:
相关推荐
TFTP(Trivial File Transfer Protocol)是一种简单的文件传输协议,通常用于在计算机网络上进行小文件的传输。与 FTP(File Transfer Protocol)相比,TFTP更加轻量级,但功能也更为简单。TFTP通常用于以下场景: 1...
本人亲测centos系统离线安装,附带实际...TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
TFTP-SERVER可以做为TFTP服务器对网络设备的配置文件和IOS进行管理
TFTP 普通文件传输协议最初是在1980年定义的,它是FTP协议的轻量级版本,没有目录浏览或密码功能。 TFTP采用UDP而不是TCP进行传输,通常用于将固件升级传输到网络设备,如路由器,交换机和IP电话。它还用于启动无盘...
适用于个人建立专用的tftp服务器用于文件的传输和管理等操作,有了他就可以快速建立tftp服务器了,小编为大家带来的是TFTP Server汉化,方便网络管理员使用。
第14章 管理bootp和tftp 服务器391-412
FTP服务器: 除了TFTP,3CDaemon 还包括一个FTP(File Transfer Protocol)服务器,支持更复杂的文件传输需求,提供更多的文件管理功能。 Syslog服务器: 3CDaemon 提供了Syslog服务器功能,用于收集和管理网络设备...
大多数执行指望TFTP服务器的系统管理员来限制客户的访问,只允许它们访问引导所必须的文件。TFTP使用停止等待协议,数据发送方在发送下一个数据块之前需要等待接受
您将需要使用 dnsmasq 和包含的 dnsmasq.conf 文件来管理这些文件。 启动和运行的基本命令如下。 是在 dnsmasq 邮件列表中找到的,其中包含一个或多或少的工作配置文件,用于使用网络引导映像服务器 mac。NFS 根...
执行基本的路由器配置 备份路由器配置文件 从 TFTP 服务器将备份配置文件重新加载到路由器的 RAM 中 保存新的运行配置到 NVRAM
//将原有IOS文件备份到TFTP服务器上 ASA(config)# copy disk0:/asdm521.bin tftp://192.168.1.2/asdm521.bin //将原有asdm文件备份到TFTP服务器上 //设置启动文件及ASDM ASA(config)# asdm image disk0:/asdm621...
恢复回收站中的文件命令:undelete 彻底删除回收站中的所有文件命令:reset recycle-bin TFTP文件传输命令:tftp tftp-server{get|put}source-filename[destination-filename] 参数tftp-server表示TFTP服务器的IP...
实验四、路由器的文件维护 一、 实验目的 a) 掌握路由器的软件升级 b) 备份和还原路由器的配置文件 二、 应用环境 a) 路由器生产厂家会不断推出新的软件版本,增加新的功能,管理员需要及时升级 b) 配置文件需要及时...
工具支持:串口通讯、串口代理、TCP、UDP、Telnet、Ping、TFtp等通讯测试 1、本工具支持固定预定义命令,命令可以进行分组,由树形控件管理。点击“命令编辑”即可编辑预定义命令, 编辑保存后点击“命令更新”...
文件传输协议(File Transfer Protocol,FTP),vsftpd(very secure ftp daemon,非常安全的FTP守护进程 FTP有两种工作模式 1.主动模式,FTP服务器主动连接客户机 2.被动模式,客户机主动连接FTP服务器(FTP服务器...
本软件遵循BOOTP规范,内置DHCP/TFTP 服务,提供网络 启动服务(netboot),支持工作站从PXE 引导。 PXE 启动所需的网络引导程序(NBP)可由使用者自行指 定,目前国内外使用广泛的开源NBP 主要有:grub4dos/ gpxe/...
文件管理、目录操作、压缩备份、查找搜索、权限管理、磁盘管理、用户管理、组管理、网络管理等命令,VI与VIM编辑器,GNU编译工具GCC,GDB调试器和Makefile开发工程管理工具,Linux开发环境的安装及配置,安装和配置...
交换机配置 交换机硬件构成 交换机软件操作系统( RGNOS ) Console 任何Interface TFTP telnet、web 带外管理 带内管理 常用的交换机配置方法 1) 带外管理 – 通过带外对交换机进行管理 (PC 与交换机直接相连) 2) 带...
使用python编写的自动备份交换机配置的程序,单文件直接运行即可,目前只支持telnet方式连接交换机,支持华为、华三、锐捷交换机,通过tftp方式自动备份配置 管理信息表格为[管理信息.csv],和本程序放在同一个目录 ...
深度远程启动管理器软件特性 本软件遵循BOOTP规范,内置DHCP/TFTP 服务,提供网络 启动服务(netboot),支持工作站从PXE 引导。 PXE 启动所需的网络引导程序(NBP)可由使用者自行指 定,目前国内外使用广泛的开源...