'Net'에 해당되는 글 1건

  1. 2008.07.30 [JAVA] apache commons-net을 이용해서 FTP접속해봅시다. (2)
 
apache홈페이지에 가면 commons에 net라는 프로젝트가 있습니다. 이걸 이용하면 메일프로그램도 만들고, ftp프로그램도 만들고 다 손쉽게 만들 수 있을 것 같더군요.

  • FTP
  • NNTP
  • SMTP
  • POP3
  • Telnet
  • TFTP
  • Finger
  • Whois
  • rexec/rcmd/rlogin
  • Time (rdate) and Daytime
  • Echo
  • Discard
  • NTP/SNTP

아는 건 몇 개 없네-_-; Telnet도 된다는 건 CRT같은 것도 만들 수 있는건가...
어쨌든, ftp접속해서 리스트를 받아오는 프로그램을 작성해봅시다.
우선 준비물은 commons-net-1.4.1.jar과 jakarta-oro-2.0.8.jar 입니다.
commons-net.1.4.1.jar는 http://commons.apache.org/downloads/download_net.cgi
jakarta-oro-2.0.8.jar는 http://jakarta.apache.org/site/downloads/downloads_oro.cgi

SFTP는 안됩니다. SFTP는 SFTP를 지원하는 다른 라이브러리가 있더라구요. 고걸 사용해야해요.
[code]
package com.mudchobo.ftptest;

import java.io.IOException;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;

public class FtpTest
{
    public static void main(String[] args) throws IOException
    {
        FTPClient client = new FTPClient();
        client.setControlEncoding("euc-kr"); // 한글 encoding....
       
        FTPClientConfig config = new FTPClientConfig();
        config.setDefaultDateFormatStr("yyyy년 M월 d일");
        config.setRecentDateFormatStr("M월 d일 HH:mm");
        client.configure(config);

        client.connect("접속할 ip or 도메인");
        client.login("아이디", "비밀번호");
       
        FTPFile[] files =
            client.listFiles("리스트를 가져올 경로");
       
        for (int i=0; i<files.length; i++)
        {
            FTPFile file = files[i];
            System.out.println("파일이름: " + file.getName() + " 사이즈 : " + file.getSize());
        }
       
        client.logout();
       
        if (client.isConnected())
        {
            client.disconnect();
        }
    }
}
[/code]
여기서 주의할 점은 config에서 DefaultDateFormatStr이랑 RecentDateFormatStr을 설정 안하면 리스트로 못 받아오더라구요. 저걸 설정할 때 ftp버전 마다 다 틀려서 다르게 설정 해야합니다. 우선 FTP에 접속을 해서 최근꺼랑 기본꺼랑 어떻게 나오는지 확인 후 거기에 맞춰야 합니다.

시작 -> 실행 -> cmd 치시고,
ftp 접속할 주소 [엔터]
아이디 [엔터]
비밀번호 [엔터]
dir 치시면 어떻게 나오는지 다 나옵니다.
저같은 경우 이렇게 나옵니다.
-rw-r--r--   1 daewoo   dba         3486  7월  1일  13:38 .cshrc
drwxr-xr-x  11 daewoo   dba          512 2002년  1월  3일 .dt
저거에 맞춰서 config설정해주시면 돼요.

실행해보면 이렇게 돼요.

파일이름: . 사이즈 : 512
파일이름: .. 사이즈 : 512
파일이름: MSG 사이즈 : 512
파일이름: RSTA 사이즈 : 1296
파일이름: RSUM 사이즈 : 1296
파일이름: SERR 사이즈 : 162
파일이름: SRET 사이즈 : 162
파일이름: SSTA 사이즈 : 162
파일이름: SSUM 사이즈 : 729
파일이름: SSUM_REPORT 사이즈 : 1948
파일이름: TPRR 사이즈 : 162
파일이름: URET 사이즈 : 162
파일이름: bin 사이즈 : 512
파일이름: data 사이즈 : 512
파일이름: src 사이즈 : 512
파일이름: ssta 사이즈 : 162
파일이름: trace 사이즈 : 1024

파일 받고, 올리고 하는 건, api참조!

FTP로 접속해서 파일 송수신하는 프로그램을 개발해야해서 포스팅!



 
Posted by 머드초보

댓글을 달아 주세요

  1. jongjin 2009.05.17 17:59  댓글주소  수정/삭제  댓글쓰기

    FTPFile 로는 file의 경로는 가져올수 없나요???

    • 머드초보 2009.05.20 21:31  댓글주소  수정/삭제

      음 그때 했을 때 기억이 잘 안나네요 ㅠ
      경로를 가져올 수 있는 방법은 있었던 것 같은데요 ㅠ
      사이트에서 확인해보시면...ㅠ
      죄송해요 ㅠ