본 자료는
1. 프로그램 동작 전 준비사항
1-1. 유선 또는 무선(HNS 무선랜 권장)으로 FTP 서버(Server)와 연결 설정
1-2. FTP Server 또는 원격 FTP 계정 필요(ALFTP Server 설정 방법 안내)
1-3. 클라이언트(Client)의 환경설정
2. 본 예제 실행 시 주의사항
3. FTP 서버(Server)와 FTP 클라이언트(Client) 프로그램 동작 순서
4. SmartFTP 관련 메서드
순서로 진행합니다.
본 자료는 SmartX-Solution중 SmartFTP를 응용하여 간단한 FTP Client 프로그램을 만든 예제이며
IEC-Series(클라이언트) → PC(FTP 서버)로 연결하여 파일을 업로드 / 다운로드 가능합니다.
본 자료에서 클라이언트(IEC-Series)와 서버(PC) 연결 방법, FTP 서버 측의 환경설정,
Client 측의 환경설정, 예제 프로그램 사용 시 주의사항, FTP 관련 메서드와 전체 소스를 제공합니다.
SmartFTP에 대하여 보다 자세한 설명은 자료실 > SmartX Framework 관련 > SmartX 프로그래밍 가이드 > SmartFTP를 참조하시기 바랍니다.
1. 프로그램 동작 전 준비사항 1-1. 유선 또는 무선(HNS 무선랜 권장)으로 FTP Server와 연결 설정
유/무선으로 연결 방법은 다음과 같습니다. (IEC-Series ↔ ALFTP 서버), (IEC-Series ↔ 공유기 ↔ ALFTP 서버)
1-2. FTP Server 또는 원격 FTP 계정 필요(ALFTP Server 설정 방법 안내)
ALFTP를 인터넷에서 다운로드 받아 설치 후 [메뉴] Tools → Run Server 선택
① Server IP address : 서버 측 IP 주소
② User ID : 서버 측 ALFTP의 UserID 지정
③ Password : 서버 측 ALFTP의 Password 지정
④ Port : ALFTP가 사용하는 포트 번호
⑤ DownLoad와 UpLoad를 위한 홈 디렉토리 설정
⑥ OK 버튼으로 설정 내용 저장
1-3. 클라이언트(Client)의 환경 설정
프로그램 테스트 전에 IEC-Series에서 맥 어드레스(MacAddress)와 고정 IP를 설정 후 레지스트리 저장(Registry Save)을 반드시 해주어야 합니다.
- [STEP-1] 맥어 드레스 설정 윈도우 CE 바탕화면 → System Configs
- [STEP-2] 시작 → 설정 → 네트워크 및 전화 접속 연결
- [STEP-3] 레지스트리 저장. 윈도우 CE 바탕화면 → Registry Save
※ 통신 환경의 문제로 동작이 안될수도 있으니 환경 설정 후 장비 간 핑(Ping) Test를 해보시는 것을 권장합니다.
2. 본 예제 실행 시 주의사항 경로 문자열 사용 시 주의사항(C#, VB.NET, CPP)
업/다운 시 | 파일 경로 |
---|---|
1. 서버 측 경로 (FTP Server) | 경로 구분문자 // 사용 |
2. 클라이언트 측 경로 (IEC-Series) | 경로 구분문자 \\ 사용 Ex) Flash Disk\\1.png Ex) SD Card\\Sub\\2.png Flash~ 또는 SD~경로의 맨 앞은 구분문자(\\)를 미 삽입 |
※ 서버 측 경로 (FTP Server). 서버의 최상위가 Current 폴더인 경우
※ 서버 측 경로 (FTP Server). 서버의 Sub 폴더가 Current 폴더인 경우
- 파일과 폴더 이름의 대/소문자를 구분하여 사용하기 바랍니다.
- 파일 경로상 하위 폴더는 자동 생성되지 않으므로 다운로드/업로드 전에 꼭 생성해줘야 합니다.
- 예제 실행 시 참조 DLL인 SmartFTPCore.DLL 파일이 필요하므로 참조 DLL 폴더에서 SmartFTPCore.DLL 파일을 실행 프로그램과 함께 복사해 주시기 바랍니다.
- 외부 클라이언트에서 FTP Server로 접속이 안 되는 경우에는 방화벽이 허용되지 않아서 발생하는 문제일 수 있으므로 방화벽 정책에서 해당 부분을 제외해 주시기 바랍니다.
3. FTP 서버와 FTP 클라이언트 프로그램 동작 순서
① Server IP address를 설정합니다. CMD 창에서 "ipconfig" 명령어로 확인 가능합니다.
② User ID를 설정합니다. ALFTP의 User ID를 설정합니다.
③ Password를 설정합니다. ALFTP의 Password를 설정합니다.
④ Port를 설정합니다. FTP를 기본으로 사용하는 포트는 21번 포트입니다.
⑤ Client가 FTP Server로 접속하는 경우 보여질 홈 디렉토리를 설정합니다.
⑥ OK를 클릭하여 FTP 서버(Server)를 시작합니다.
⑦ FTP Server Address(①)을 입력합니다.
⑧ FTP Server 접속에 사용할 User ID(②)를 입력합니다.
⑨ User ID에 맞는 Password(③)을 입력합니다.
⑩ FTP Server에 접속할 포트 번호(④)를 입력합니다.
⑪ Passive Mode(클라이언트가 서버에서 데이터를 얻는 방식)를 선택합니다.
⑫ Connect 버튼을 클릭하여 FTP Server와 연결합니다.
⑬ 연결이 성공한 경우 하단의 박스에서 파일을 선택하고 Download 버튼을 클릭하면
FTP Ser
ver(PC) → FTP Client(IEC-Series)로 파일을 다운로드 합니다.
이때 사용자가 다운로드 되는 파일의 위치를 직접 지정 가능합니다.
⑭ 연결이 성공한 경우 Upload 버튼을 클릭하고 IEC-Series(SD Card와 USB 메모리 포함)에서 특정 파일을 선택하면 해당 파일을 FTP Server로 업로드 가능합니다.
파일이 정상 업로드되면 하단의 박스에서 확인 가능합니다.
4. SmartFTP 관련 메서드
설정된 접속 정보로 연결 BOOL Connect(); |
---|
(인자) : 없음 (반환값) True : 연결 성공, False : 연결 실패 |
연결 해제 BOOL DisConnect(); |
---|
(인자) : 없음 (반환값) True : 연결 해제 성공, False : 연결 해제 실패 |
현재 경로를 Root 디렉토리로 설정합니다. Root 디렉토리란 FTP Server로
접속할 때 보여지는 디렉토리를 의미합니다. BOOL SetRootDirectory(); |
---|
(인자) 없음 (반환값) True : 성공, False : 실패 |
현재 경로를 설정합니다. BOOL SetCurrentDirectory(LPTSTR strPath); |
---|
(인자) strPath : 경로 (반환값) True : 성공, False : 실패 |
현재 설정된 경로를 가져옵니다. BOOL GetCurrentDirectory(LPTSTR strPath); |
---|
(인자) strPath : 경로 (반환값) True : 성공, False : 실패 |
현재 설정된 경로에서 폴더를 생성합니다. BOOL CreateFolder(LPTSTR strFolderName); |
---|
(인자) strFolderName : 폴더명 (반환값) True : 성공, False : 실패 |
현재 설정된 경로에서 폴더를 삭제합니다. BOOL DeleteFolder(LPTSTR strFolderName); |
---|
(인자) strFolderName : 폴더명 (반환값) True : 성공, False : 실패 |
현재 설정된 경로에서 파일을 삭제합니다. BOOL DeleteFiles(LPTSTR strFileName); |
---|
(인자) strFileName : 삭제할 파일 이름 (반환값) True : 성공, False : 실패 |
현재 설정된 경로에서 폴더 또는 파일의 이름을 변경합니다. BOOL ReName(LPTSTR strOldName, LPTSTR strNewName); |
---|
(인자) strOldName : 변경 전 이름 (인자) strNewName : 변경 후 이름 (반환값) True : 성공, False : 실패 |
설정된 경로의 파일을 다운로드합니다. Non-Blocking 함수로 호출 시 바로 리턴합니다. GetPercentage() 함수를 통해 현재 파일의 다운로드 상태를 확인할 수 있습니다. BOOL FileDownload(LPTSTR strFTPFilePathName, LPTSTR strLocalFilePathName); |
---|
(인자) strFTPFilePathName : FTP 서버의 다운로드 받을 경로와 파일명 (인자) strLocalFilePathName : 다운로드 시 Local에 저장될 경로와 파일 이름 (반환값) True : 성공, False : 실패 |
설정된 경로의 파일을 업로드합니다. Non-Blocking 함수로 호출 시 바로 리턴합니다. GetPercentage() 함수를 통해 현재 파일의 업로드 상태를 확인할 수 있습니다. BOOL FileUpload(LPTSTR strLocalFilePathName, LPTSTR strFTPFilePathName); |
---|
(인자) strFTPFilePathName : FTP 서버의 업로드 경로와 파일명 (인자) strLocalFilePathName : 업로드될 Local 파일 경로와 파일 이름 (반환값) True : 성공, False : 실패 |
현재 설정된 경로의 파일 및 폴더 리스트를 가져옵니다. BOOL GetFileList(LPTSTR strRetList); |
---|
(인자) strRetList : 파일 및 폴더 리스트를 다음의 형식으로 리턴합니다. "파일명:폴더명\:파일명:파일명:파일명:폴더명\:....." 인자의 배열 크기는 3000으로 설정하시기 바랍니다. 즉, 호출 시 인자의 배열의 크기를 3000으로 할당하여 전달하시기 바랍니다. (반환값) True : 성공, False : 실패 |
현재 다운로드 및 업로드 시 진행 상태를 확인합니다. int GetPercentage(); |
---|
(인자) 없음 (반환값) 0~100% : 백분율, -1 : 실패 |
현재 다운로드 및 업로드 시 진행을 취소합니다. void FileUpNDownloadCancel(); |
---|
(인자) 없음 (반환값) 없음 |