4학년 1학기 네트워크 프로그래밍 Term Project winsock을 이용한 FTP Client.
말이 좋아, 네트워크 프로그래밍이지 C로 FTP명령어 Parsing과 Passive Mode 설정 빼고는
노가다 작업 Term Project인듯 하다 -_-;;;
처음에 Term Project를 MFC기반으로 할 것이라는 이야기가 나왔었지만...
결국엔 Console로 진행 확정. ㅡ,.ㅡ;;
MFC로 했으면 하마터면 알FTP만들뻔 -ㅅ- ;;;
코딩하는데는 한 3일 걸린것같다...;;
FTP명령어에 대한 Parsing은 strtok()함수를 사용하여, 띄워쓰기에 대한 Count를 돌려,
동적할당으로 그때 그때 메모리를 늘리고 지우도록 코딩하였다.
처음에 가장 어리버리했던 Active Mode와 Passive 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 |