마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

FTPClient에 관해서

0 추천

안녕하세요^^ 초보 개발자입니다.

다름이 아니라, FTPClient를 사용하고 있는데요.

우선 소스는  아래와 같습니다.

 

FileInputStream in;
		
		try{
		
		    FTPClient ftp = new FTPClient();
	        ftp.connect("mp4.koreahosting.kr");
	        ftp.login("XXXX", "XXXXX");
	
	        ftp.setFileType(FTP.BINARY_FILE_TYPE);
	        ftp.enterLocalPassiveMode();
	        ftp.changeWorkingDirectory("/UserMov");
	
	        int reply = ftp.getReplyCode();
	        
	        
	       // System.out.println("Received Reply from FTP Connection:" + reply);
	
	        if (FTPReply.isPositiveCompletion(reply)) {
	            //System.out.println("Connected Success");
	        }
	
	        File f1 = new File(strFileName);
	        in = new FileInputStream(f1);
	
	        ftp.storeFile(f1.getName(), in);
	
	        //System.out.println("SUCCESS");
	        //System.out.println("Video Name:" +f1.getName()+" is uploaded successfully");

	        
	        ftp.logout();
	        ftp.disconnect();
        
	    } catch (Exception e) {

	    	 e.printStackTrace();
	    }

 

에러 로그는 아래와 같습니다.

 

java.net.ConnectException: failed to connect to /14.63.166.32 (port 51923): connect failed: ETIMEDOUT (Connection timed out)
    at libcore.io.IoBridge.connect(IoBridge.java:124)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:163)
    at java.net.Socket.startupSocket(Socket.java:590)
    at java.net.Socket.tryAllAddresses(Socket.java:128)
    at java.net.Socket.<init>(Socket.java:178)
    at java.net.Socket.<init>(Socket.java:150)
    at javax.net.DefaultSocketFactory.createSocket(DefaultSocketFactory.java:40)
    at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:502)
    at org.apache.commons.net.ftp.FTPClient.__storeFile(FTPClient.java:374)
    at org.apache.commons.net.ftp.FTPClient.storeFile(FTPClient.java:1379)
    at kr.co.mysense1.lossphone.v2.Self_video_Activity.upload(Self_video_Activity.java:821)
    at kr.co.mysense1.lossphone.v2.Self_video_Activity.access$9(Self_video_Activity.java:792)
    at kr.co.mysense1.lossphone.v2.Self_video_Activity$3.run(Self_video_Activity.java:752)
    at java.lang.Thread.run(Thread.java:818)
Caused by: android.system.ErrnoException: connect failed: ETIMEDOUT (Connection timed out)
    at libcore.io.Posix.connect(Native Method)
    at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111)
    at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
    at libcore.io.IoBridge.connect(IoBridge.java:122)
    ... 14 more

 

오류가 

ftp.storeFile(f1.getName(), in);

지점에서 2분 정도 대기 후, try catch로 에러가 위와 같이 잡혀 버립니다.

 

다른 폰들은 다 괜찮은데, 유독 해당 폰만 이런 현상이 나타납니다. (노트4 S LTE)

그런데, 와이파이에서는 잘되고 LTE 모드에서만 저렇게 에러가 뿜어져 나옵니다.

 

타임 아웃인것 보니까.. 인터넷 회선이 안좋아서 못올라가는건지..? 아니면 인터넷이 LTE가 안되는건지..

짐작이 안가네요 (폰은 제가 가지고 있는 것이 아니고, 다른 사람에게 APK 파일 설치 후 로그를 기록했습니다^^;)

 

고민하다가 도저히 안되서, 질문 게시판에 글을 올려봅니다. ㅠㅠ

 

답글 부탁드릴께요!!

 

레디안 (560 포인트) 님이 2015년 12월 3일 질문

2개의 답변

0 추천
 
채택된 답변

port 51923에 연결 중 Connection timed out으로 보아 패시브 포트에 연결하지 못한 거 같습니다.

FTP 서버 설정 문제나 서버측의 방화벽 설정 문제가 아닐까 생각됩니다.

FTP 서버의 패시브 모드에서 사용할 포트 범위가 방화벽에서 제대로 오픈되어 있는지 확인해보세요.

보통 특정 포트 범위로 설정하는데요.. 일부 포트가 방화벽에서 차단되어 있다면 어떨때는 되고 어떨때는 안되고 그런 문제가 발생할 수 있습니다.

isul (7,920 포인트) 님이 2015년 12월 3일 답변
레디안님이 2016년 1월 6일 채택됨
0 추천
active mode, passive mode 관련된게 아닐까 싶네요.
익명사용자 님이 2015년 12월 3일 답변
...