2012-09-25 38 views
0

我正在嘗試使用Apache Commons Net創建TFTPClient以將文件放在服務器(AIX OS)上,並且TFTP服務正在該服務器上運行,沒有任何異常在運行下面的代碼時引發,似乎一切正常,但文件沒有放在服務器上。無法使用TFTPClient發送文件(Apache Commons Net庫)

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 

這意味着一切都OK,但我沒有找到在代碼指定的目錄下的文件。

請指點。

+0

你確定這個文件真的存在嗎?嘗試詢問文件的長度:System.out.println(file.length()); – WeMakeSoftware

+0

該文件存在於本地機器上,如果該文件不存在,我會得到FilenotfoundException類型的異常。 – Javaeg

回答

0

如果你還需要幫助,我想你應該嘗試調用tftpClient.sendFile方法是這樣的:

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

在使用InetAddress.getByName(主機)它應當通過IP判斷你的主機的IP地址字符串表示或主機名稱,因爲它說here。希望它能以這種方式工作。

+0

你解決了這個問題嗎?我也遇到類似的錯誤,我無法通過HTTPClient發送文件,所以我很有興趣瞭解您是否解決了您的問題以及如何解決問題? – jrobertsz66

相關問題