'FTP Client'에 해당되는 글 1건

  1. 2014.11.29 [C] Winsock을 이용한 FTP Client 소켓 프로그래밍

4학년 1학기 네트워크 프로그래밍 Term Project winsock을 이용한 FTP Client.
말이 좋아, 네트워크 프로그래밍이지 C로 FTP명령어 ParsingPassive Mode 설정 빼고는
노가다 작업 Term Project인듯 하다 -_-;;;

처음에 Term Project를 MFC기반으로 할 것이라는 이야기가 나왔었지만...
결국엔 Console로 진행 확정. ㅡ,.ㅡ;;

MFC로 했으면 하마터면 알FTP만들뻔 -ㅅ- ;;;
코딩하는데는 한 3일 걸린것같다...;;

FTP명령어에 대한 Parsing은 strtok()함수를 사용하여, 띄워쓰기에 대한 Count를 돌려,
동적할당으로 그때 그때 메모리를 늘리고 지우도록 코딩하였다.

처음에 가장 어리버리했던 Active ModePassive Mode 접속방법...

이 Term Project에서 send()함수와 recv()노가다만 작업한다면,
FTP명령어의 80%정도는 Active Mode에서 구현이 가능하다...
(open, ls, rename, delete, info, pwd, mkdir, rmdir, cwd, bye 등등...)
하지만 20%정도는 Passive Mode에서 명령어 사용이 가능하다.
(put, get, mget, mput, rget 등등...)

문제는 FTP는 파일 전송 프로토콜(File Transfer Protocol)이므로, 나머지 20%가 더 중요하다는 것...


Active Mode

 

 

Passive Mode

 

 

open 명령어로 FTP Server에 접속할 때는 Active Mode로 접속을 하지만, Active Mode로 FTP Server를 접속한 후, 데이터를 업/다운로드 하기 위해서는 Passive Mode로 다시 요청하여 접속을 해아한다.
그러기 위해서는 PASV 명령어를 send하여 recv로 A1,A2,A3,A4,a1,a2를 받고,
부여받은 A1,A2,A3,A4,a1,a2를 변환하여 connect()을 시도하면 Passive Mode로 접속이 가능하다.

(
A1,A2,A3,A4=IP, a1,a2=Port -> Port Number 계산법 : a1*256+a2)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Portfolio' 카테고리의 다른 글

[C#, Oracle] 철도 예약 관리 프로그램  (3) 2014.11.29
[MFC] 유사 세포이미지 검색  (0) 2014.11.29
[MFC] k-Nearest Neighbor Classifier  (0) 2014.11.29
[MFC] PingPong  (0) 2014.11.29
[JAVA] 계산기  (0) 2014.11.29
Posted by Programist
,