2010-05-28 5 views
2

내가 문제, FTP를 서버에서 분리 내가 오류가 발생하지 않고 FileTransferClient 개체의 분리()를 호출 단순히 수 enterprisedt java ftp framework.연결 enterprisedt의 FTP 자바 프레임 워크

을 사용하는 데있어 사용) (재설정 .

나는 서버에 연결 한 다음 분리 외에 아무것도하지 않는 :이 작업을 실행하는 경우

 // create client 
     log.info("Creating FTP client"); 
     ftp = new FileTransferClient(); 

     // set remote host 
     log.info("Setting remote host"); 
     ftp.setRemoteHost(host); 
     ftp.setUserName(username); 
     ftp.setPassword(password); 

     // connect to the server 
     log.info("Connecting to server " + host); 
     ftp.connect(); 
     log.info("Connected and logged in to server " + host); 

     // Shut down client 
     log.info("Quitting client"); 
     ftp.disconnect(); 

     log.info("Example complete"); 

, 로그 읽기 :

INFO [test] 28 maj 2010 16:57:20.216 : Creating FTP client 
INFO [test] 28 maj 2010 16:57:20.263 : Setting remote host 
INFO [test] 28 maj 2010 16:57:20.263 : Connecting to server x 
INFO [test] 28 maj 2010 16:57:20.979 : Connected and logged in to server x 
INFO [test] 28 maj 2010 16:57:20.979 : Quitting client 
ERROR [FTPControlSocket] 28 maj 2010 16:57:21.026 : Read failed ('' read so far) 

그리고 스택 트레이스 :

com.enterprisedt.net.ftp.ControlChannelIOException: Connection reset 
at com.enterprisedt.net.ftp.FTPControlSocket.readLine(FTPControlSocket.java:1029) 
at com.enterprisedt.net.ftp.FTPControlSocket.readReply(FTPControlSocket.java:1089) 
at com.enterprisedt.net.ftp.FTPControlSocket.sendCommand(FTPControlSocket.java:988) 
at com.enterprisedt.net.ftp.FTPClient.quit(FTPClient.java:4044) 
at com.enterprisedt.net.ftp.FileTransferClient.disconnect(FileTransferClient.java:1034) 
at test.main(test.java:46) 

문제가 없으면 서버에 연결할 수 있다는 점에주의해야합니다. 예를 들어 ge 현재 작업 디렉터리에있는 파일 목록을 표시합니다. 그러나 나는 어떤 이유로, 연결을 끊을 수 없다! 나는 액티브 모드와 패시브 모드를 모두 시도했다.

위의 예는 복사/붙여 넣기 방식으로 작성되었습니다. Google 검색을 통해 이와 관련된 모든 것을 제공 할 수는 없으므로이 문제에 대한 제안이나 경험이 있으면 좋겠습니다. 라이브러리와 FTP 서버 사이의 통신을 관찰하게됩니다

com.enterprisedt.util.debug.Logger.setLevel(com.enterprisedt.util.debug.Level.DEBUG); 

로 추적을 가능하게

+0

다른 FTP 서버를 사용해 보셨습니까? 아마도 서버 구현은 quit-command를 보낼 때 연결을 끊을 것입니다. – aioobe

+0

나는 예. 내 질문에 그것을 언급 깜빡했지만 동일한 결과와 2 ftp 서버에 연결을 시도했습니다. –

답변

0

보십시오.

명령 줄 클라이언트를 사용하여 ftp 서버에 연결을 시도해보십시오. 연결하고 로그인하여 모든 것이 작동하는지 확인하십시오. 그런 다음 quot quit을 입력하십시오. 그러면 명시적인 quit 명령이 ftp 서버에 전송됩니다. 221 또는 226 응답을 받아야합니다. 다른 코드가 있거나 연결이 막히면 호환되지 않는 FTP 서버를 사용합니다.

그런 경우 disconnect(true)을 사용해도 정상적인 종료를 시도하지 않고 연결을 닫을 수 있습니다.

+0

quit 명령을 이해하지 못하는 것과 같이 준수하지 않습니까? 아픈 시도해라, thx! –

+0

221 응답을 얻었으므로 서버에 아무런 문제가 없다고 생각합니다. 연결 끊기 (true)는 작동하지만, 모든 것을 닫을 뿐이라는 것을 귀찮게합니다. 나는 disconnect() 함수를 구현할 수 있다고 생각한다. 그러나 문제를 해결할 수있는 버그가 있다는 것을 알고 성가시다. S –