我正在尝试使用Apache Commons Net创建TFTPClient以将文件放在服务器(AIX OS)上并且在该服务器上运行TFTP服务,在运行以下代码时没有引发任何异常并且似乎一切正常,但文件没有放在服务器上。
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.SocketException;
import java.net.UnknownHostException;
import org.apache.commons.net.tftp.TFTP;
import org.apache.commons.net.tftp.TFTPClient;
public class Test {
/**
* @param args
* @throws IOException
* @throws SocketException
*/
public static void main(String[] args) throws SocketException, IOException {
int timeout=5000;
String host="192.168.1.20";
int port=22;
TFTPClient tftpClient=new TFTPClient();
tftpClient.setDefaultTimeout(60000);
tftpClient.open(69);
tftpClient.setSoTimeout(timeout);
System.out.println("DONE");
FileInputStream input = null;
File file;
file = new File("D:\\project.ear");
input = new FileInputStream(file);
try{
tftpClient.sendFile("/home/dev/project.ear", TFTP.BINARY_MODE, input, host);
}
catch (UnknownHostException e)
{
System.err.println("Error: could not resolve hostname.");
System.err.println(e.getMessage());
System.exit(1);
}
System.out.println("DONE2");
tftpClient.close();
}
}
上述代码的输出是:
DONE
DONE2
这意味着一切正常,但我没有在代码中指定的目录中找到该文件。
请告知。答案 0 :(得分:0)
如果您仍然需要帮助,我认为您应该尝试以这种方式调用tftpClient.sendFile方法:
tftpClient.sendFile("/home/dev/project.ear", TFTP.BINARY_MODE, input, InetAddress.getByName(host));
使用 InetAddress.getByName(host)时,它应该通过ip字符串表示或主机名来确定主机IP地址,正如here所述。希望它以这种方式工作。