2011-10-18 2 views
2

나는 ftp를 통해 파일을 보내기 위해 java 코드를 작성하고 있습니다. 내가 사용한 서버는 localhost의 FileZilla Server 소프트웨어입니다.FTP 클라이언트가 IPV6을 사용하여 파일을 전송할 수 없습니다.

public static void main(String[] args) { 
    try { 
     String host = "fe80::21a:a0ff:fe8d:fe63"; //No problem if ipv4 
     int port = 1998; 
     String username = "joe"; 
     String password = "123"; 
     String directory = "D:/ftp_share"; 
     File fileToTransfer = new File("D:/RND/samplefile.txt"); 
     String fileName = fileToTransfer.getName(); 
     FTPClient ftp = new FTPClient(); 
     ftp.connect(host, port); 
     ftp.login(username, password); 
     FileInputStream in = new FileInputStream(fileToTransfer); 
     if (!(directory == null || "".equals(directory))) { 
      ftp.changeWorkingDirectory(directory); 
     } 
     ftp.setFileType(FTP.BINARY_FILE_TYPE); 
     ftp.appendFile(fileName, (InputStream) in); 
     System.out.println("File " + fileName + " succesfully sent via ftp to " + host + " at port " + port); 

    } catch (SocketException ex) { 
     Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (IOException ex) { 
     Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

문제는 IPv6를 사용하지 않고 IPV4 만 보낼 수 있다는 것입니다. 자바 exeption이

org.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421 received. Server closed connection. 
    at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:360) 
    at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:290) 
    at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:474) 
    at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:547) 
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:680) 
    at org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:551) 
    at org.apache.commons.net.ftp.FTPClient.appendFile(FTPClient.java:1765) 
    at rnd.Main.main(Main.java:44) 

하고 파일 질라 서버에서 메시지가

(000018)10/18/2011 14:46:39 PM - (not logged in) (fe80::21a:a0ff:fe8d:fe63)> Connected, sending welcome message... 
(000018)10/18/2011 14:46:39 PM - (not logged in) (fe80::21a:a0ff:fe8d:fe63)> 220-FileZilla Server version 0.9.39 beta 
(000018)10/18/2011 14:46:39 PM - (not logged in) (fe80::21a:a0ff:fe8d:fe63)> 220-written by Tim Kosse ([email protected]) 
(000018)10/18/2011 14:46:39 PM - (not logged in) (fe80::21a:a0ff:fe8d:fe63)> 220 Please visit http://sourceforge.net/projects/filezilla/ 
(000018)10/18/2011 14:46:39 PM - (not logged in) (fe80::21a:a0ff:fe8d:fe63)> USER joe 
(000018)10/18/2011 14:46:39 PM - (not logged in) (fe80::21a:a0ff:fe8d:fe63)> 331 Password required for joe 
(000018)10/18/2011 14:46:39 PM - (not logged in) (fe80::21a:a0ff:fe8d:fe63)> PASS *** 
(000018)10/18/2011 14:46:39 PM - joe (fe80::21a:a0ff:fe8d:fe63)> 230 Logged on 
(000018)10/18/2011 14:46:39 PM - joe (fe80::21a:a0ff:fe8d:fe63)> CWD D:/RND/ftp_share 
(000018)10/18/2011 14:46:39 PM - joe (fe80::21a:a0ff:fe8d:fe63)> 550 CWD failed. "/D:/RND/ftp_share": directory not found. 
(000018)10/18/2011 14:46:39 PM - joe (fe80::21a:a0ff:fe8d:fe63)> TYPE I 
(000018)10/18/2011 14:46:39 PM - joe (fe80::21a:a0ff:fe8d:fe63)> 200 Type set to I 
(000018)10/18/2011 14:46:39 PM - joe (fe80::21a:a0ff:fe8d:fe63)> EPRT |1|0.0.0.0|2885| 
(000018)10/18/2011 14:46:39 PM - joe (fe80::21a:a0ff:fe8d:fe63)> 200 Port command successful 
(000018)10/18/2011 14:46:39 PM - joe (fe80::21a:a0ff:fe8d:fe63)> APPE jawapannya.txt 
(000018)10/18/2011 14:46:39 PM - joe (fe80::21a:a0ff:fe8d:fe63)> 421 Can't create socket 

입니다 수 가능 IPV6를 사용하여 보낼 수 있도록하는 방법을 어떤 한 도움이됩니다.

참고 : 이미 내 지역에 IPV6이 있습니다.

+0

'550 CWD failed'대신 IPv6로 인해 실패했는지 확인하십시오. "/ D :/Tecforte/ftp_share": 디렉터리를 찾을 수 없습니다. "? –

+0

ftp4j (http://www.sauronsoftware.it/projects/ftp4j/)를 사용하여 시도해 볼 수도 있습니다. commons-ftpclient – SirVaulterScoff

+0

ftp4j를 사용해 보았습니다. 예, IPV4에 성공적입니다. 누구든지 IPv6 샘플을 제공 할 수 있습니까? 이 메시지는 filezilla 서버에서 "500 당신은 IPv6를 사용하여 연결되어 있습니다 .PASV는 IPv4 전용입니다. 대신 EPSV 명령을 사용해야합니다. " –

답변

0

EPRT 명령이 위조 된 경우 서버가 지정되지 않은 IPv4 주소에 연결하도록 요청하고 있습니다.

로컬 호스트 주소 :: 1 또는 링크 로컬 주소보다는 전체 주소에서 더 잘 작동 할 수 있습니다.

관련 문제