2017-04-20 11 views
1

FTPS 서버에 연결하기 위해 아파치 commons-net 3.6 라이브러리를 사용하고 있습니다. FTPS 서버는 타사의 NAT 뒤에 있습니다. 서버 측에서 설정을 변경할 수는 없습니다. 서버에 로그인 할 수는 있지만 파일을 나열 할 수는 없습니다. 일부 공개 FTP 및 FTPS 서버에서 동일한 코드를 시도했지만 결과가 성공적이었습니다. 그들은 NAT 뒤에 있지 않은 것 같습니다. 그러나 filezilla는 문제가있는 서버의 파일을 성공적으로 연결하고 나열 할 수 있습니다. 내 코드JAVA FTPSClient 파일 목록 문제

 ftps.connect(server, port); 
     System.out.println("Connected to " + server + "."); 

     reply = ftps.getReplyCode(); 
     ftps.enterLocalPassiveMode(); 
     if (!FTPReply.isPositiveCompletion(reply)) { 
      ftps.disconnect(); 
      System.err.println("FTP server refused connection."); 
      System.exit(1); 
     } 
     if (!ftps.login(username, password)) { 
      ftps.logout(); 

     } 
     // ftps.setEnabledSessionCreation(false); 
     ftps.feat(); 
     ftps.execPBSZ(0); 
     ftps.execPROT("P"); 
     ftps.setFileType(FTP.BINARY_FILE_TYPE); 
     FTPFile dirs[] = ftps.listDirectories(); 

있다 그리고 내 FTPS 로그가 :

220 FTP Server ready. 
AUTH TLS 
234 AUTH TLS successful 
Connected to x.x.x.x 
USER ******* 
331 Password required for azercell 
PASS ******* 
230 User myuser logged in 
FEAT 
211-Features: 
MDTM 
MFMT 
LANG bg-BG;en-US;fr-FR;it-IT;ja-JP;ko-KR;ru-RU;zh-CN;zh-TW 
TVFS 
UTF8 
AUTH TLS 
MFF modify;UNIX.group;UNIX.mode; 
MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*; 
PBSZ 
PROT 
REST STREAM 
SIZE 
211 End 
PBSZ 0 
200 PBSZ 0 successful 
PROT P 
200 Protection set to Private 
TYPE I 
200 Type set to I 
SYST 
215 UNIX Type: L8 
PASV 
227 Entering Passive Mode (192,168,2,50,192,12). 
[Replacing PASV mode reply address 192.168.2.50 with x.x.x.x] 
LIST 
150 Opening BINARY mode data connection for file list 
425 Unable to build data connection: Operation not permitted 

내가 제대로 NAT 연결 뒤에 그 이전 버전에 3.6 공유지-NET 라이브러리 이전을 couldnt 핸들을 읽을 것입니다.

아무도 도와 줄 수 있습니까? 내 코드에 어떤 문제가 있습니까?

+0

그것은 어리석은 대답이 될 수 있지만 "filezilla가 성공적으로 연결할 수 있고 파일을 나열 할 수 있습니다"그래서 당신은 디렉토리가 아닌 파일을 볼 수 있도록 디렉토리가 개인 파일이지만 파일이 아니므로 FTPFile [ ] files1 = ftps.listFiles(); –

+0

LizLamperouge, 전에 해봤습니다. 동일한 오류 – ali

+0

확인, 올바른 디렉토리에 있는지 확인 하시겠습니까? ftps.printWorkingDirectory();를 시도하십시오. ftps.changeWorkingDirectory ("/ directory"); –

답변

2

결론 내 문제는 NAT 기술과 관련이 없으므로 apache-commons 3.6은 모든 FTPS 옵션을 제대로 처리하지 못합니다. 우리가 제 3 자와 통합하기 전에 언급했듯이 FTPS 설정을 변경할 수있는 옵션이 없다면 적어도 우리는 filezilla ftp 서버를 설치하고 오류를 재현 할 수있었습니다. 다행히 Luke Hansen의 http://eng.wealthfront.com/2016/06/10/connecting-to-an-ftps-server-with-ssl-session-reuse-in-java-7-and-8/에 해결책을 찾았습니다. 대단히 감사합니다 그