无法使用TFTPClient发送文件(Apache Commons Net库)

时间:2012-09-25 09:04:16

标签: java apache-commons aix tftp

我正在尝试使用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

这意味着一切正常,但我没有在代码中指定的目录中找到该文件。

请告知。

1 个答案:

答案 0 :(得分:0)

如果您仍然需要帮助,我认为您应该尝试以这种方式调用tftpClient.sendFile方法:

tftpClient.sendFile("/home/dev/project.ear", TFTP.BINARY_MODE, input, InetAddress.getByName(host));

使用 InetAddress.getByName(host)时,它应该通过ip字符串表示或主机名来确定主机IP地址,正如here所述。希望它以这种方式工作。