안녕하세요!
학교에서 작업을 하면서 회사 FTP 서버에 접속해서 주기적으로 파일을 받아오는 프로그램을 작성을 했습니다.!
단순 소켓 프로그래밍으로는 접속을 성공해서 RFC에서 알아낸 FTP 명령어를 서버 쪽으로 보내주게 됩니다.
FTP는 Passive모드로 파일을 다운받아오기 때문에 해당 경로나 파일 정보를 받아오기 위해서는 받아올 때마다 PASV 명령어를 보내줘서 데이터용 ip, port번호를 받아옵니다.
근데 제가 원하는 최종 경로는 년도, 월, 일이 포함되어있어서 계속 바뀌기 때문에 최종 경로를 알아내기 위해 주기적으로 PASV LIST 명령어를 보내주어서 ROOT 경로부터 가장 최근 년월일 인 폴더로 경로 설정을 해줘야 합니다.
중간 경로도 LIST 명령어로 받아오는데 이 중간 경로 정보도 데이터이기 때문에 LIST 명령어를 보낼 때마다 connect 함수를 사용하게 됩니다.
서버 쪽에 생성된 최근 경로를 예측해서 최종 파일을 받아오게 되면 하나의 주기가 끝이납니다.